Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Stisk klávesy bez klávesnice

Ahoj všem,
možná si někdo řekne, že jsem se asi pomátl, ale vysvětlím :-)
Mám jednu aplikaci na svém notebooku, kterou v pohodě ovládám přes dálkové ovládání, které podporuje další základní funkce pro ovládání Windows bez nutnosti mít multimediální OS. Na tomto dálkači jsou také čtyři hotkey tlačítka, které mohu přiřadit jakékoliv aplikaci na PC, pokud ji dokáži nastavit klávesovou zkratku podporovanou těmi hotkey na dálkači. Třeba potřebuji spustit program xy, vytvořím pouze jeho zástupce a přidělím mu klávesovou zkratku, kterou hotkey tlačítko na dálkači podporuje, třeba Ctrl+Alt+C a funguje vše bez problémů. Nicméně potřebuji pro ovládání jednoho programu ještě dvě tlačítka na klávesnici, konkrétně Q a P, což nelze změnit přimo v programu, který chci ovládat, tam je to totiž pevně dané. Nenapadá někoho, jak si vytvořit nějaký spouštěcí soubor, kterému budu moci přiřadit libovolnou klávesovou zkratku, který by mi následně po jeho spuštění suploval stisk a uvolnění (jeden úhoz) klávesy Q a druhý soubor stisk a uvolnění klávesy P ? Čili pokud bych ten soubor spustil třeba 4x, napsal by mi v případě otevřeného třeba notepadu 4x písmeno Q. Nějak by to snad i mohlo jít, pokud Windows používají pro toto přímo virtuální klávesnici, která je jejich běžnou součástí.

Předmět Autor Datum
Noo. Udělal jsem prográmek, který odesílá 3-sekundy po spuštění zvolenou klávesu. Ovšem možná není d…
Flash_Gordon 04.10.2011 13:24
Flash_Gordon
Díky moc za prográmek, nicméně v tom odkazu (seznam zkratek) nevidím kódy pro querty klávesnici, čil…
Craft 04.10.2011 21:26
Craft
VBscript: Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "Notepad.exe" Do Until…
pme 04.10.2011 16:41
pme
Předpokládám, že stačí uložit kód s příponou vbs. Nicméně netuším, kde se konfiguruje na konkrétní k…
Craft 04.10.2011 21:32
Craft
Zkus takto: WshShell.SendKeys("Q"); Uložit s příponou vbs, přiřadit zástupci klávesovou zkratku...
host 04.10.2011 21:45
host
Ahoj hoste, zkusil jsem to, ale končí to touhle chybovou hláškou: Skript: Documents and Settings\x…
Craft 04.10.2011 21:59
Craft
Druhý pokus: set WshShell = CreateObject("WScript.Shell") WshShell.SendKeys "Q"…
host 04.10.2011 22:17
host
To už je lepší, ale ještě to nefunguje, protože jak jsem to zkoušel, co to vlastně tvoří za znak v n…
Craft 04.10.2011 22:30
Craft
To je divné, mně to vypíše znak jaký zadám. Zkus to ASCII kódem: set WshShell = CreateObject("WScri…
host 04.10.2011 22:47
host
Tak jsem to důkladně odzkoušel na třech počítačích, protože jsem měl pocit, že to může mít na svědom… poslední
Craft 04.10.2011 23:56
Craft

Noo. Udělal jsem prográmek, který odesílá 3-sekundy po spuštění zvolenou klávesu.
Ovšem možná není dořešeno, kterému programu by měl odeslat klávesu.
Je totiž dobré vědět, že výchozí chování OS je, že klávesu obdrží jen program, který má tzv. focus.

Send-key program čte ze svého souboru - zkratka.txt - definovanou klávesu, kterou pošle.
Každý řádek představuje jednu klávesu.
Ve výchozím příkladu posílá enter. Seznam zkratek je možné se dočíst z odkazu v prográmku.

DOWNLOAD

Například chceme-li po spuštění programu stisknout CTRL+Shift+ESC bude vypadat obsah souboru následovně:

^%{esc}

Díky moc za prográmek, nicméně v tom odkazu (seznam zkratek) nevidím kódy pro querty klávesnici, čili písmena, která právě potřebuji.

Například chceme-li po spuštění programu stisknout CTRL+Shift+ESC bude vypadat obsah souboru

Já ale nepotřebuji tu klávesovou zkratku spouštět tím programem, pouze potřebuji, aby ten program suploval stisk a uvolnění mnou definované jedné abecední klávesy. Čili jeden exe soubor by suploval stisk a uvolnění klávesy P a druhý exe soubor zase stisk a uvolnění klavesy Q.
Tu klávesovou zkratku vyšle totiž hotkey tlačítko na dalkáči, čili např. tebou uvedené CTRL+Shift+ESC a to zbůsobí aktivaci programu (souboru), který nahradí ruční stisk klávesy na klávesnici. Pokud jeden exe soubor bude suplovat stisk klávesy P a druhý Q, pak stačí pouze vytvořit jejich zástupce a nadefinovat jim ve vlastnostech klávesovou zkratku, která vyvolá jejich spuštění. Snad je to moje vysvětlení aspoň trochu srozumitelné :-)

Předpokládám, že stačí uložit kód s příponou vbs. Nicméně netuším, kde se konfiguruje na konkrétní klávesu Q nebo P. Můžeš mi to prosím tě trochu osvětlit?

Edit: už to chápu, ten skrip spouští konkrétně notepad, čili nějaký exe soubor

objShell.Run "Notepad.exe"

a zřejmě pouze supluje zástupce.
Nicméně jak jsem psal výše potřeboval bych, aby ten skript suploval stiskt a puštění klávesy P. Pak druhý takový skript zase klávesy Q. Zástupcům těchto dvou skriptů bych akorát určil klávesovou zkratku, (pravé tlačítko myši - vlastnosti - klávesová zkratka) a bylo by to vyřešeno. Nicméně zatím mi to nepomůže, ale díky za ochotu.

To už je lepší, ale ještě to nefunguje, protože jak jsem to zkoušel, co to vlastně tvoří za znak v notepadu, tak místo malého p

p

to píše tohle:

ˇp

Zkoušel jsem to nejdříve s písmenem p, ale to bude asi jedno.

A to je ten problém, proč to nefunguje, ale vypadá to na dobré cestě, jenom odstranit ten opačný háček před písmenem.

Edit: zkoušel jsem i q, ale to zase místo malého

q

píše vlnovku

~

Tak jsem to důkladně odzkoušel na třech počítačích, protože jsem měl pocit, že to může mít na svědomí přídavná numerická klávesnička u netbooku, ale jinde stejný výsledek. Takže jsem to vyzkoušel klasicky pomocí klávesnice a vše ok, jak sám píšeš, čili funguje perfektně.
Problém je totiž v tom dálkači, protože přidává před to písmeno vždycky i nějaký znak. Každopádně ten kód je plně funkční, což jsem potřeboval, takže díky moc :beer:
Zkusím na tom dálkači nastavit jinou kombinaci kláves, třeba mu domluvím, aby tam ty znaky nevkládal :-)

Zpět do poradny Odpovědět na původní otázku Nahoru