Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 241000 (2436)
  Suchen
 Zurück zur Übersicht
 AutorThema: Tastatureingabe simulieren
Uwe
Datum:23.07.02 19:21 Antwortenals Email verschicken (uwe.beisler@t-online.de) 


Hallo,

ich habe u.a. einen alten PC mit alter TV-Out-Grafkarte.
Der Rechner soll beim booten automatisch in den TV-Out-Mode umschalten.
Das gibt die Karte bzw. Software aber nicht her.

Ich habe die zugehörige Software so konfiguriert, daß sie bei
Strg-Shift-T umschaltet. Es muß eine exotische Kombination sein
um nicht aus versehen umzuschalten.

Alles was ich jetzt noch brauche ist eine Idee wie ein Profan-Prg. aussehen
müßte das aus dem Autostart-Ordner die gewünschte Tastaturkombination sendet.

Wohin es sendet schein egal zu sein da die Software der Miro 3D
auch umschaltet wenn ein anderes Fenster aktiv ist.

Vielen Dank im voraus !

Uwe


Sven Schmidts
Datum:23.07.02 19:30 Antwortenals Email verschicken (schmidts@flat2serv.de) 


Hallo,

schau Dir mal die API "keybd_event (user32.dll, name 'keybd_event')" an, vielleicht hilft sie Dir weiter:

Doku:

"
The keybd_event function synthesizes a keystroke. The system can use such a synthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt handler calls the keybd_event function.

VOID keybd_event(

BYTE bVk, // virtual-key code
BYTE bScan, // hardware scan code
DWORD dwFlags, // flags specifying various function options
DWORD dwExtraInfo // additional data associated with keystroke
);


Parameters

bVk

Specifies a virtual-key code. The code must be a value in the range 1 to 254.

bScan

Specifies a hardware scan code for the key.

dwFlags

A set of flag bits that specify various aspects of function operation. An application can use any combination of the following predefined constant values to set the flags:

Value Meaning
KEYEVENTF_EXTENDEDKEY If specified, the scan code was preceded by a prefix byte having the value 0xE0 (224).
KEYEVENTF_KEYUP If specified, the key is being released. If not specified, the key is being depressed.


dwExtraInfo

Specifies an additional 32-bit value associated with the key stroke.



Return Values

This function has no return value.

Remarks

Although keybd_event passes an OEM-dependent hardware scan code to Windows, applications should not use the scan code. Windows converts scan codes to virtual-key codes internally and clears the up/down bit in the scan code before passing it to applications.
An application can simulate a press of the PRINTSCREEN key in order to obtain a screen snapshot and save it to the Windows clipboard. To do this, call keybd_event with the bVk parameter set to VK_SNAPSHOT, and the bScan parameter set to 0 for a snapshot of the full screen or set bScan to 1 for a snapshot of the active window.
"

Mfg.
Sven Schmidts


Uwe
Datum:23.07.02 19:39 Antwortenals Email verschicken (uwe.beisler@t-online.de) 



Super, das ging ja schnell.

Danke !

Wenn noch jemand einen Code in der Schublade hat bin ich
trotzdem noch interessiert.
Da die API mich ungefähr genauso mag wie ich sie ist der Erfolg der schnellen Hilfe also noch nicht sichergestellt.

Für den Fall, daß es klappt findet ihr meine Umsetzung hier.

Uwe


Sven Schmidts
Datum:23.07.02 19:56 Antwortenals Email verschicken (schmidts@flat2serv.de) 


Ist doch recht einfach:

$H windows.ph
KeyBd_Event(VK_MENU,0,0,0)
KeyBd_Event(VK_SNAPSHOT,0,0,0)

usw.


Uwe
Datum:23.07.02 21:01 Antwortenals Email verschicken (uwe.beisler@t-online.de) 


'Hallo Sven,
'
'Du hast recht es war wirklich nicht schwer.
'Das mit der API war eher ein allgemeines Statement.
'Ich habe es erst hinterher probiert.
'
'$H Windows.ph
'KeyBd_Event(VK_MENU,0,0,0)
'KeyBd_Event(VK_CONTROL,0,0,0)
'KeyBd_Event(VK_T,0,0,0)
'
'"KeyBd_Event" ist bei mir in der Windows.ph übrigens nicht enthalten.
'
Def keybd_event(4) !"USER32","keybd_event"
'ALT-CTRL-T
keybd_event(18,0,0,0)
keybd_event(17,0,0,0)
keybd_event(84,0,0,0)
'
'Noch einmal :
' DANKE !!!
'
'Uwe
'P.S.
'Das Prg. funktioniert zwar, aber nicht bei der Miro 3D.
'Mit der ASUS V7700 klappt es.
'Die ist mir aber eigentlich zu schade für den Zweck.
'Ich vermute die Miro-Software greift tiefer ab.
'Vielleicht gibt es ja noch einen weiteren Weg ?

'VK_SHIFT $10 = 16 SHIFT key
'VK_CONTROL $11 = 17 CTRL key
'VK_MENU $12 = 18 ALT key
'VK_T $54 = 84 T key
'
'
'Virtual-Key Codes
'The following table shows the symbolic constant names, hexadecimal values, and keyboard equivalents for the virtual-key codes used by the Microsoft Windows operating system. The codes are listed in numeric order.
'
'Symbolic constant name Value (hexadecimal) Mouse or keyboard equivalent
'VK_LBUTTON 01 Left mouse button
'VK_RBUTTON 02 Right mouse button
'VK_CANCEL 03 Control-break processing
'VK_MBUTTON 04 Middle mouse button (three-button mouse)
' --- 05-07 Undefined
'VK_BACK 08 BACKSPACE key
'VK_TAB 09 TAB key
' --- 0A-0B Undefined
'VK_CLEAR 0C CLEAR key
'VK_RETURN 0D ENTER key
' --- 0E-0F Undefined
'VK_SHIFT 10 SHIFT key
'VK_CONTROL 11 CTRL key
'VK_MENU 12 ALT key
'VK_PAUSE 13 PAUSE key
'VK_CAPITAL 14 CAPS LOCK key
' --- 15-19 Reserved for Kanji systems
' --- 1A Undefined
'VK_ESCAPE 1B ESC key
' --- 1C-1F Reserved for Kanji systems
'VK_SPACE 20 SPACEBAR
'VK_PRIOR 21 PAGE UP key
'VK_NEXT 22 PAGE DOWN key
'VK_END 23 END key
'VK_HOME 24 HOME key
'VK_LEFT 25 LEFT ARROW key
'VK_UP 26 UP ARROW key
'VK_RIGHT 27 RIGHT ARROW key
'VK_DOWN 28 DOWN ARROW key
'VK_SELECT 29 SELECT key
' --- 2A Original equipment manufacturer (OEM) specific
'VK_EXECUTE 2B EXECUTE key
'VK_SNAPSHOT 2C PRINT SCREEN key for Windows 3.0 and later
'VK_INSERT 2D INS key
'VK_DELETE 2E DEL key
'VK_HELP 2F HELP key
'VK_0 30 0 key
'VK_1 31 1 key
'VK_2 32 2 key
'VK_3 33 3 key
'VK_4 34 4 key
'VK_5 35 5 key
'VK_6 36 6 key
'VK_7 37 7 key
'VK_8 38 8 key
'VK_9 39 9 key
' --- 3A-40 Undefined
'VK_A 41 A key
'VK_B 42 B key
'VK_C 43 C key
'VK_D 44 D key
'VK_E 45 E key
'VK_F 46 F key
'VK_G 47 G key
'VK_H 48 H key
'VK_I 49 I key
'VK_J 4A J key
'VK_K 4B K key
'VK_L 4C L key
'VK_M 4D M key
'VK_N 4E N key
'VK_O 4F O key
'VK_P 50 P key
'VK_Q 51 Q key
'VK_R 52 R key
'VK_S 53 S key
'VK_T 54 T key
'VK_U 55 U key
'VK_V 56 V key
'VK_W 57 W key
'VK_X 58 X key
'VK_Y 59 Y key
'VK_Z 5A Z key
' --- 5B-5F Undefined
'VK_NUMPAD0 60 Numeric keypad 0 key
'VK_NUMPAD1 61 Numeric keypad 1 key
'VK_NUMPAD2 62 Numeric keypad 2 key
'VK_NUMPAD3 63 Numeric keypad 3 key
'VK_NUMPAD4 64 Numeric keypad 4 key
'VK_NUMPAD5 65 Numeric keypad 5 key
'VK_NUMPAD6 66 Numeric keypad 6 key
'VK_NUMPAD7 67 Numeric keypad 7 key
'VK_NUMPAD8 68 Numeric keypad 8 key
'VK_NUMPAD9 69 Numeric keypad 9 key
'VK_MULTIPLY 6A Multiply key
'VK_ADD 6B Add key
'VK_SEPARATOR 6C Separator key
'VK_SUBTRACT 6D Subtract key
'VK_DECIMAL 6E Decimal key
'VK_DIVIDE 6F Divide key
'VK_F1 70 F1 key
'VK_F2 71 F2 key
'VK_F3 72 F3 key
'VK_F4 73 F4 key
'VK_F5 74 F5 key
'VK_F6 75 F6 key
'VK_F7 76 F7 key
'VK_F8 77 F8 key
'VK_F9 78 F9 key
'VK_F10 79 F10 key
'VK_F11 7A F11 key
'VK_F12 7B F12 key
'VK_F13 7C F13 key
'VK_F14 7D F14 key
'VK_F15 7E F15 key
'VK_F16 7F F16 key
'VK_F17 80H F17 key
'VK_F18 81H F18 key
'VK_F19 82H F19 key
'VK_F20 83H F20 key
'VK_F21 84H F21 key
'VK_F22 85H F22 key
'VK_F23 86H F23 key
'VK_F24 87H F24 key
' --- 88-8F Unassigned
'VK_NUMLOCK 90 NUM LOCK key
'VK_SCROLL 91 SCROLL LOCK key
' --- 92-B9 Unassigned
' --- BA-C0 OEM specific
' --- C1-DA Unassigned
' --- DB-E4 OEM specific
' --- E5 Unassigned
' --- E6 OEM specific
' --- E7-E8 Unassigned
' --- E9-F5 OEM specific
' --- F6-FE Unassigned



Uwe
Datum:23.07.02 21:10 Antwortenals Email verschicken (uwe.beisler@t-online.de) 



Stimmt nicht, es geht doch mit der Miro wenn man die richtige
Tastaturkombination verwendet und nicht die von der ASUS.


Uwe
Datum:23.07.02 22:00 Antwortenals Email verschicken (uwe.beisler@t-online.de) 



Uuups, kann es sein, daß man die Tasten auch irgenwie wieder los lassen muß ?

Aber wie ?

Uwe


Uwe
Datum: 24.07.02 09:10 Antwortenals Email verschicken (uwe.beisler@t-online.de) 



Ok, wer lesen kann ist eindeutig im Vorteil.

Ich hatte gestern einfach keinen Bock mehr.
Heute hat es dafür wie am Schnürrchen geklappt :

-------------------------
Def keybd_event(4) !"USER32","keybd_event"
Def Sleep(1) !"KERNEL32","Sleep"
'T-ALT-CTRL
Sleep(50)'warten bis die Umschalt-Software startbereit ist (Autostart)
keybd_event(84,0,0,0)
keybd_event(18,0,0,0)
keybd_event(17,0,0,0)
keybd_event(84,0,2,0)
keybd_event(18,0,2,0)
keybd_event(17,0,2,0)
Beep
-------------------------

Noch ein paar Tips :
- Das Timing kann eine Rolle spielen.
Die abfragende Software muß so weit sein - Sleep.
- Die Reihenfolge kann eine Rolle spielen
Das tut es zwar per Pfote nicht aber
glaubt es einfach und probiert rum wenn nichts geht.
- Die Einstellungen im BIOS sollten ggf. ein Booten
ohne Bildschirm ermöglichen.
- Der Beep ist nicht notwendig aber sinnvoll wenn man
ohne Bildschirm bootet - der Rechner ruft einen dann
wenn er so weit ist.

Uwe



 Zurück zur Übersicht