Hallo, guten Tag.
Ich sende ein Seriell-Signal zum Purebasic und möchte bitte, das jetzt eine Taste am PC betätigt wird für ein anders Programm was läuft.Die seriellen Daten senden habe ich fertig.
Wie geht das bitte mit der Taste?
Danke.
Gruss
Taste betätigen am PC über Purebasic ?
Re: Taste betätigen am PC über Purebasic ?
Hallo funkheld,
wie sendest du das serielle Signal ?
Über COM-Port (USB/What ever)
Oder über Funk ?
wie sendest du das serielle Signal ?
Über COM-Port (USB/What ever)
Oder über Funk ?
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: Taste betätigen am PC über Purebasic ?
Code: Alles auswählen
If port > 0
While AvailableSerialPortInput(port)
ReadSerialPortData(port, @r_byte, 1)
Wend
EndIf
Wenn hier in r_byte ein bestimmter Wert drin ist, den ich auswerte soll eine bestimmte Taste betätigt werden von Purebasic.
Danke.
Gruss
Re: Taste betätigen am PC über Purebasic ?
Gut!
Also dann soll bei einem bestimmten empfangenen Wert eine bestimmte Taste simuliert werden. Richtig ?
Hierbei ist jetzt also nur dein Problem wie man eine\n Taste(ndruck) simulieren kann, oder ?
Suche mal nach "keybd_event" oder "Tasten simulieren", oder ähnlich hier im Forum.
Einfaches Beispiel:
Dabei ist aber das größte Problem den fremden Eingabe-Fokus zu erlangen.
Oder wenn du einen fremden Button klicken möchtest wäre auch ein Simulieren eines Mausklicks sinnvoll.
Hier einmal noch etwas komfortabler:
Also dann soll bei einem bestimmten empfangenen Wert eine bestimmte Taste simuliert werden. Richtig ?
Hierbei ist jetzt also nur dein Problem wie man eine\n Taste(ndruck) simulieren kann, oder ?
Suche mal nach "keybd_event" oder "Tasten simulieren", oder ähnlich hier im Forum.
Einfaches Beispiel:
Code: Alles auswählen
RunProgram("notepad.exe")
Delay(1000)
keybd_event_(#VK_A,0,0,0)
Oder wenn du einen fremden Button klicken möchtest wäre auch ein Simulieren eines Mausklicks sinnvoll.
Code: Alles auswählen
GetCursorPos_(xy.point)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, xy\x,xy\y,0,0)
Code: Alles auswählen
Global TestMethode = 1
Procedure Taste(Taste.i, Gedrueckt.b = 1, Methode.b = 0, Zeichenmodus.b = 0)
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
If Methode = 0
Protected TipTap.INPUT
TipTap\Type = #INPUT_KEYBOARD
If Gedrueckt = 1
If Zeichenmodus = 1
TipTap\ki\wScan = Taste
TipTap\ki\dwFlags = 4
Else
TipTap\ki\wVk = Taste
TipTap\ki\dwFlags = 0
EndIf
ElseIf Gedrueckt = 0
If Zeichenmodus = 1
TipTap\ki\wScan = Taste
TipTap\ki\dwFlags = 4 | #KEYEVENTF_KEYUP
Else
TipTap\ki\wVk = Taste
TipTap\ki\dwFlags = #KEYEVENTF_KEYUP
EndIf
EndIf
SendInput_(1, @TipTap, SizeOf(INPUT))
ElseIf Methode = 1
If Gedrueckt = 1
If Zeichenmodus = 1
keybd_event_(0, Taste, 4, 0)
Else
keybd_event_(Taste, 0, 0, 0)
EndIf
Else
If Zeichenmodus = 1
keybd_event_(0, Taste, 4 | #KEYEVENTF_KEYUP, 0)
Else
keybd_event_(Taste, 0, #KEYEVENTF_KEYUP, 0)
EndIf
EndIf
EndIf
CompilerEndIf
EndProcedure
Procedure Maus(PosX.i, PosY.i, Taste.w = 0, Gedrueckt.b = 1, Methode.b = 0) ;Taste = 0 (Left) / Taste = 1 (Right) / Taste = 2 (Middle)
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
If Methode = 0
Protected Miau.INPUT
Miau\Type=#INPUT_MOUSE
If Gedrueckt = 1
If Taste = 0
Miau\mi\dwFlags = #MOUSEEVENTF_LEFTDOWN
ElseIf Taste = 1
Miau\mi\dwFlags = #MOUSEEVENTF_RIGHTDOWN
ElseIf Taste = 2
Miau\mi\dwFlags = #MOUSEEVENTF_MIDDLEDOWN
EndIf
Else
If Taste = 0
Miau\mi\dwFlags = #MOUSEEVENTF_LEFTUP
ElseIf Taste = 1
Miau\mi\dwFlags = #MOUSEEVENTF_RIGHTUP
ElseIf Taste = 2
Miau\mi\dwFlags = #MOUSEEVENTF_MIDDLEUP
EndIf
EndIf
SetCursorPos_(PosX, PosY)
SendInput_(1, @Miau, SizeOf(INPUT))
Else
Protected MausSpielfeldBreite.i = GetSystemMetrics_( #SM_CXSCREEN )-1
Protected MausSpielfeldHoehe.i = GetSystemMetrics_( #SM_CYSCREEN )-1
Protected mx.i = PosX * (65535 / MausSpielfeldBreite)
Protected my.i = PosY * (65535 / MausSpielfeldHoehe)
If Gedrueckt = 1
If Taste = 0
mouse_event_(#MOUSEEVENTF_LEFTDOWN | #MOUSEEVENTF_MOVE | #MOUSEEVENTF_ABSOLUTE, mx, my, 0, 0)
ElseIf Taste = 1
mouse_event_(#MOUSEEVENTF_RIGHTDOWN | #MOUSEEVENTF_MOVE | #MOUSEEVENTF_ABSOLUTE, mx, my, 0, 0)
ElseIf Taste = 2
mouse_event_(#MOUSEEVENTF_MIDDLEDOWN | #MOUSEEVENTF_MOVE | #MOUSEEVENTF_ABSOLUTE, mx, my, 0, 0)
EndIf
Else
If Taste = 0
mouse_event_(#MOUSEEVENTF_LEFTUP | #MOUSEEVENTF_MOVE | #MOUSEEVENTF_ABSOLUTE, mx, my, 0, 0)
ElseIf Taste = 1
mouse_event_(#MOUSEEVENTF_RIGHTUP | #MOUSEEVENTF_MOVE | #MOUSEEVENTF_ABSOLUTE, mx, my, 0, 0)
ElseIf Taste = 2
mouse_event_(#MOUSEEVENTF_MIDDLEUP | #MOUSEEVENTF_MOVE | #MOUSEEVENTF_ABSOLUTE, mx, my, 0, 0)
EndIf
EndIf
EndIf
CompilerEndIf
EndProcedure
RunProgram("notepad.exe")
Delay(3000)
; If TestMethode = 1
; Maus(100, 100, 0, #True, #True)
; Maus(100, 100, 0, #False, #True)
; Else
; Maus(100, 100, 0, #True)
; Maus(100, 100, 0, #False)
; EndIf
For i = 1 To 10
If TestMethode = 1
Taste(#VK_LSHIFT, #True, #True)
Taste('R', #True, #True, #True)
Taste(#VK_LSHIFT, #False, #True)
Taste('R', #False, #True, #True)
Taste('a', #True, #True, #True)
Taste('a', #False, #True, #True)
Else
Taste('R', #True, #False, #True)
Taste(#VK_A, #True, #False)
EndIf
Next i
Betriebssysteme: div. Windows, Linux, Unix - Systeme
no Keyboard, press any key
no mouse, you need a cat
no Keyboard, press any key
no mouse, you need a cat
Re: Taste betätigen am PC über Purebasic ?
Hallo, danke für die Hilfe.
Gruss
Gruss
Re: Taste betätigen am PC über Purebasic ?
Hallo, danke für die Hilfe.
Gruss
Gruss
Re: Taste betätigen am PC über Purebasic ?
Hast du vergessen, dass du genau das gleiche am 07.01. geschrieben hast? Oder bist du ein Bot?