Přepínání klávesnice
Tady je program, který zobrazí v současnosti nastavený layout klávesnice a přepne ji. Podmínkou samozřejmě je, že česká klávesnice je správně nainstalovaná do Windows.
DECLARE INTEGER GetKeyboardLayoutName IN WIN32API STRING @ DECLARE INTEGER ActivateKeyboardLayout IN WIN32API INTEGER, INTEGER cLN=SPACE(9) =GetKeyboardLayoutName(@cLN) DO CASE CASE SUBSTR(cLN,7,2)="05" WAIT WINDOW "Máte českou klávesnici" NOWAIT CASE SUBSTR(cLN,7,2)="09" WAIT WINDOW "Máte anglickou klávesnici" NOWAIT OTHERWISE WAIT WINDOW "Máte jinou klávesnici - "+; "podívejte se do FOXPRO.H na kód "+SUBSTR(cLN,7,2)+"!" NOWAIT ENDCASE =ActivateKeyboardLayout(0,1) && Přepíná mezi CZ a EN
Mapované disky
Od klávesnice nyní přeskočíme k dalšímu častému dotazu: jak zjistit, které síťové disky máme na daném stroji k dispozici. Aby to však nevypadalo, že všechno musíme řešit přes DECLARE a volání Windows API, ukážeme si způsob, jakým v čístém programu FoxPro (bez knihoven Windows API) zjistit, zda je určitý disk diskem lokálním nebo diskem namapovaným přes síť (což bývá samozřejmě dost důležitá věc). Následující program vypíše všechny namapované disky s uvedením jejich UNC:
LOCAL lii LOCAL ARRAY aTemp(1) FOR lii=ASC("A") TO ASC("Z") =ADIR(aTemp,CHR(lii)+":","V") && "V" znamená pro ADIR() "Volume name" IF aTemp(1)="\\" ?["]+aTemp(1)+[" is mapped to ]+CHR(lii)+":" && *) ENDIF NEXT
A to je vše. Zdraví vás
Milan Kosina, kosina@vol.cz
* | Pozn. přepis.: | Fíííha. Tak takovýhle použití hranatých závorek vidím poprvé. |
** | Pozn. přepis.: | No, nevím, nevím. Jen tak jsem si zkusil zavolat program přes UNC a funguje to (VFP 5.0 SP3, VFP 6.0 SP3) Problémy s UNC cestami: Nelze spustit VFP EXE přes UNC cestu, pokud tato cesta má v sobě mezery - Q281698 (řeší to až SP5 pro VS 6.0). Ve VFP 3.0 nelze nastavit defaultní cestu jako UNC - Q138093. |