Seite 1 von 2
daten an programm eingabe senden
Verfasst: 21.06.2008 00:26
von FrEeKsTeR
ja ich binns schonwieder *g*
ich hab schonwieder ein problem, diesmal aber ein anderes programm.
ich habe mit runprogramm()
ein programm gestartet und versuche nun
mittels writeprogrammdata() verschiedene tasten an das programm zu senden. allerdings sagt mir eine fehlermeldung nach dem starten des programms vorgang read konnte nicht auf den speicher ausgeführt werden. weis jemand woran das liegen kann ?
hier mal der code
Code: Alles auswählen
If OpenConsole()
DateiName$ = "verzeichniss\prog.exe"
Arbeitsverzeichnis$ = "verzeichniss\"
parameter$ = ""
runprog = RunProgram(DateiName$ , parameter$ , Arbeitsverzeichnis$ , #PB_Program_Open | #PB_Program_Write | #PB_Program_Read)
If runprog
progid = ProgramID(runprog)
Delay(1000)
*Buffer = AllocateMemory(2)
PokeC(*Buffer, 110)
WriteProgramData(Progid, *Buffer, 2)
EndIf
EndIf
würd mich über schnelle hilfe sehr freuen
mfg FrEeKsTeR
Verfasst: 21.06.2008 00:58
von mardanny71
Kann jetzt deinen Code nicht auf die schnelle lokal Anpassen und testen...
Aber wenn Du 2 Byte reservierst - hast Du es im Unicodemodus compiliert?
gruss
mardanny71
Verfasst: 21.06.2008 01:19
von Fluid Byte
Man kann mit WriteProgramData() einen Tastendruck simulieren? Oder hab ich jetzt was falsch verstanden?
Verfasst: 21.06.2008 01:58
von Kaeru Gaman
schätze das ist sein denkfehler...
ich hab keine Ahnung, ob Tastendrücke über StdIn an einen Prozess gesendet werden.
ich würds eher über #WM_KeyDown probieren...
Verfasst: 21.06.2008 08:29
von FrEeKsTeR
also in der refferenz steht ja drinn das 1 byte für ASCII und 2 byte für unicode reserviert werden. ich hab ketzt einfach mal die code 110 für das ASCII "n" zeichen benutzt weil als erstes im externen programm n gedrückt werden soll. allerdings startet mein programm das externe, dann dauert es nen bissl wegen dem delay und dann kommt der fehler das read nicht auf die und die speicher adresse verwendet werden kann und dann schielßt sich mein tool einfach und das externe programm läuft weiter (allerdings ohne das "n" gedrückt wird) und an fluid byte ja das siehst du richtig mit writepeogrammdata *g* das habe ich vor zu benutzen aber wie gesagt er spuckt mir ne felhermeldung
ach hab gerade was gesehen *g* der debugger spuckt mir das aus
"program is not an open program object"
also durch ausprobieren hab ich jetzt folgendes in versuchung
Code: Alles auswählen
If OpenConsole()
DateiName$ = "\verzeichniss\prog.exe"
Arbeitsverzeichnis$ = "\verzeichniss\"
runprog = RunProgram(DateiName$ , parameter$ , Arbeitsverzeichnis$ , #PB_Program_Open | #PB_Program_Write | #PB_Program_Read)
If runprog
pid = ProgramID(runprog)
Debug runprog
Debug pid
Delay(5000)
If pid
*Buffer = AllocateMemory(1)
PokeC(*Buffer, 110)
WriteProgramData(pid, *Buffer, 1)
EndIf
EndIf
EndIf
also ich krig schonmal mit ProgrammID die richtige prozess id raus allerdings erkennt writeprogramdata() pid nicht an und sagt halt program is not an open program object weis einer vieleicht was ich falsch mache ?[/code]
Verfasst: 21.06.2008 10:45
von FrEeKsTeR
ok ich bin jetzt nen schritt weiter *g* weil mir ist aufgefallen das writeprogramdata() als ersten wert in der klammer nicht die prozess id erwartet sondern die nummer von runprog. also soweit so gut *g* jetzt mochte ich an das gestartete programm nen tastendruck senden (Enter oder n) wenn ich jetzt mit WriteProgramData() jetzt zw den ASCII wert von enter an das programm sende passiert einfach garnix und mein eigendliches programm schliest sich mit dem komentar program execution has finished sprich ist alles wunderbar gelaufen(seitens meines programmes) also wie schaff ich es jetzt tastendruck Enter oder tastendruck n an das geöffnete programm zu senden?
mfg FrEeKsTeR
Verfasst: 21.06.2008 10:55
von Kaeru Gaman
wie ich bereits sagte

ich bin mir nicht sicher

ob tastendrücke über StdIn

an ein Programm gesendet werden
es gab schon etliche beispiele dafür

und jedesmal

wurde ein tastendruck simuliert
geh mal auf
[
Suchen ] 
und gib "tastendr* simulieren" ein
dann solltest du 14 topics finden

von denen sich die meisten

damit beschäftigen
Verfasst: 21.06.2008 15:01
von Deluxe0321
[OT]
@ Kaeru
Das sollte man als Standard einführen. Sieht nett aus
[/OT]
Verfasst: 21.06.2008 16:04
von ts-soft
Kaeru Gaman hat geschrieben:wie ich bereits sagte

ich bin mir nicht sicher

ob tastendrücke über StdIn

an ein Programm gesendet werden
es gab schon etliche beispiele dafür

und jedesmal

wurde ein tastendruck simuliert
geh mal auf
[
Suchen ] 
und gib "tastendr* simulieren" ein
dann solltest du 14 topics finden

von denen sich die meisten

damit beschäftigen
Äh, no comment zu den Smileys
Kindergarten?
Selbstverständlich ist
wesentlich einfacher und sinnvoller
Verfasst: 21.06.2008 17:26
von Kaeru Gaman
> no comment zu den Smileys
die smilies sind ein comment...
> Selbstverständlich ist WriteProgramStringN wesentlich einfacher und sinnvoller
hab ich nicht gewußt, wurde noch niemals in irgendeinem topic hier im forum erwähnt.
dann hätte ja durchaus schon vorher mal jemand einfach auf mein posting von gestern antworten können "doch das geht"...