F6 an Tastatur senden

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
rayman1970
Beiträge: 89
Registriert: 01.09.2004 16:10
Wohnort: Troisdorf bei Bonn
Kontaktdaten:

F6 an Tastatur senden

Beitrag von rayman1970 »

Hi Leute von heute !

Ich kann alles mögliche an die Tastatur senden , nur bei den F Tasten 1 - 12 klappt es nicht .
Ich habe mehrere Codes im Code Archiv ausprobiert und damit rum experimentiert aber das brachte mich auch nicht weiter .

Hier mal so ein Code :

Code: Alles auswählen

WinTitle$ = "jaPBe"

Procedure SendAKey(key.s) 
     vk = VkKeyScan_( Asc( key )) 
     If vk>320:keybd_event_(#VK_LSHIFT,1,0,0):EndIf 
     keybd_event_(vk,1,0,0) 
     keybd_event_(vk,1, #KEYEVENTF_KEYUP,0)
     If vk>320 
          keybd_event_(#VK_LSHIFT,1,0,0) 
          keybd_event_(#VK_LSHIFT,1,#KEYEVENTF_KEYUP,0)
     EndIf 
EndProcedure 
 
      
handle.l=FindWindow_(0, WinTitle$) 
     
      
If handle>0
     beep_(100,500)
     OpenIcon_(handle) 
     SetForegroundWindow_(handle) 
     SetActiveWindow_(handle) 
     
     
     ; ------- Hier soll die F6 Taste hin ------- 
     SendAKey( "A" )  
     ; ------------------------------------------
EndIf

End


Vielleicht hat ja einer einen Tip oder einen Code parat !

Danke schon mal im voraus !

Gruss Rayman
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

http://www.purearea.net/pb/CodeArchiv/I ... endKeys.pb

Dieser Code kann offensichtlich auch F6 senden.
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Benutzeravatar
rayman1970
Beiträge: 89
Registriert: 01.09.2004 16:10
Wohnort: Troisdorf bei Bonn
Kontaktdaten:

Beitrag von rayman1970 »

Hi Lars !

Da mit geht´s, Danke

:D

Gruss Rayman
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Man, was ist Andre nur für ein fauler Sack - da steht noch immer
"; Author: Danilo", obwohl schon 12 mal darauf hingewiesen
wurde es endlich zu ändern. :|
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: F6 an Tastatur senden

Beitrag von GPI »

rayman1970 hat geschrieben:

Code: Alles auswählen

WinTitle$ = "jaPBe"
Was willst du den erreichen?
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
rayman1970
Beiträge: 89
Registriert: 01.09.2004 16:10
Wohnort: Troisdorf bei Bonn
Kontaktdaten:

Beitrag von rayman1970 »

Hi GPI !

Ich schreibe gerade ein Programm mit dem ich die linke Maustaste missbrauchen kann . Da ich zu faul bin immer auf dein Compiler oder Debugger Symbol zu klicken will ich das über einen verlängerten Mausklick steuern . Ich drücke also einfach die linke Maustaste eine halbe Sekunde und jaPBe startet den Compiler bzw. Debugger :D .

Gruss Rayman
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag von sbehrens »

rayman1970 hat geschrieben:...Da ich zu faul bin immer auf dein Compiler oder Debugger Symbol zu klicken...
Sooo weit ist es schon gekommen. Nee, nee. Wo soll das nach hinführen? :mrgreen:

mfG
Basti
enjoy life... while you can!
Benutzeravatar
rayman1970
Beiträge: 89
Registriert: 01.09.2004 16:10
Wohnort: Troisdorf bei Bonn
Kontaktdaten:

Beitrag von rayman1970 »

Das Programm ist fertig , jetzt kann ich mein Dasein ganz faul genießen :lol:
Einfach aus dem Code eine EXE machen und starten ! Die mittlere Maustaste ist die magische Taste welche die Arbeit erleichert !

Gruss Rayman

P.S. Danilo , Danke für deinen super Code...... :lol:

Code: Alles auswählen

MessageRequester("jaPBe Tool","Maus Programm ist an ! Mit der mittleren Maustaste Debugger starten !",#PB_MessageRequester_Ok) 

Procedure SendKeys(handle,window$,keys$) 
     If window$<>"" : handle=FindWindow_(0,window$) : EndIf ; Use window$ instead of handle. 
     If IsWindow_(handle)=0 ; Does the target window actually exist? 
          ProcedureReturn 0 ; Nope, so report 0 for failure to type. 
     Else 
          ; This block gives the target window the focus before typing. 
          thread1=GetWindowThreadProcessID_(GetForegroundWindow_(),0) 
          thread2=GetWindowThreadProcessID_(handle,0) 
          If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#True) : EndIf 
          SetForegroundWindow_(handle) ; Target window now has the focus for typing. 
          Delay(125) ; 1/8 second pause before typing, to prevent fast CPU problems. 
          ; Now the actual typing starts. 
          For r=1 To Len(keys$) 
               vk$=Mid(keys$,r,1) 
               If vk$="{" ; Special key found. 
                    s=FindString(keys$,"}",r+1)-(r+1) ; Get length of special key. 
                    s$=Mid(keys$,r+1,s) ; Get special key name. 
                    Select s$ ; Get virtual key code of special key. 
                         Case "ALTDOWN" : keybd_event_(#VK_MENU,0,0,0) ; Hold ALT down. 
                         Case "ALTUP" : keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT. 
                         Case "BACKSPACE" : vk=#VK_BACK 
                         Case "CONTROLDOWN" : keybd_event_(#VK_CONTROL,0,0,0) ; Hold CONTROL down. 
                         Case "CONTROLUP" : keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL. 
                         Case "DELETE" : vk=#VK_DELETE 
                         Case "DOWN" : vk=#VK_DOWN 
                         Case "END" : vk=#VK_END 
                         Case "ENTER" : vk=#VK_RETURN 
                         Case "F1" : vk=#VK_F1 
                         Case "F2" : vk=#VK_F2 
                         Case "F3" : vk=#VK_F3 
                         Case "F4" : vk=#VK_F4 
                         Case "F5" : vk=#VK_F5 
                         Case "F6" : vk=#VK_F6 
                         Case "F7" : vk=#VK_F7 
                         Case "F8" : vk=#VK_F8 
                         Case "F9" : vk=#VK_F9 
                         Case "F10" : vk=#VK_F10 
                         Case "F11" : vk=#VK_F11 
                         Case "F12" : vk=#VK_F12 
                         Case "ESCAPE" : vk=#VK_ESCAPE 
                         Case "HOME" : vk=#VK_HOME 
                         Case "INSERT" : vk=#VK_INSERT 
                         Case "LEFT" : vk=#VK_LEFT 
                         Case "PAGEDOWN" : vk=#VK_NEXT 
                         Case "PAGEUP" : vk=#VK_PRIOR 
                         Case "PRINTSCREEN" : vk=#VK_SNAPSHOT 
                         Case "RETURN" : vk=#VK_RETURN 
                         Case "RIGHT" : vk=#VK_RIGHT 
                         Case "SHIFTDOWN" : shifted=1 : keybd_event_(#VK_SHIFT,0,0,0) ; Hold SHIFT down. 
                         Case "SHIFTUP" : shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT. 
                         Case "TAB" : vk=#VK_TAB 
                         Case "UP" : vk=#VK_UP 
                    EndSelect 
                    If Left(s$,3)<>"ALT" And Left(s$,7)<>"CONTROL" And Left(s$,5)<>"SHIFT" 
                         keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the special key. 
                    EndIf 
                    r=r+s+1 ; Continue getting the keystrokes that follow the special key. 
               Else 
                    vk=VkKeyScanEx_(Asc(vk$),GetKeyboardLayout_(0)) ; Normal key found. 
                    If vk>304 And shifted=0 : keybd_event_(#VK_SHIFT,0,0,0) : EndIf ; Due to shifted character. 
                    keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the normal key. 
                    If vk>304 And shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) : EndIf ; Due to shifted character. 
               EndIf 

          Next 
          If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#False) : EndIf ; Finished typing to target window! 
          keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT key if user forgot. 
          keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL key if user forgot. 
          keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT key if user forgot. 
          ProcedureReturn 1 ; Report successful typing! :) 
     EndIf 
EndProcedure 


Repeat
 Delay(1)
If GetAsyncKeyState_(#VK_MBUTTON)
     w$="jaPBe"
     SendKeys(0,w$,"{F6}") 
     Delay(500)
EndIf

ForEver
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Wozu der Aufwand? Warum nicht einfach F6 drücken?
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Antworten