Autor |
Beitrag |
avoid
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Do 18.08.11 18:51
ich fass mich kurz, versprochen.
arbeite mit VC# 2010 Express.
also, ich brauche hilfe dabei, einer windows forms anwendung klar zu machen:
1. das sie zu arbeiten hat obwohl sie nicht das aktive fenster ist.
ich glaub sowas könnte mit dem backgroundworker gehen oder?
2. das sie beim empfang bestimmter werte über den serialport,
so tut als ob bestimmte tasten auf der tastatur gedrückt worden sind.
3. das sie die gedrückten tasten an bestimmte anwendungen sendet,
auch wenn diese im hintergrund sein sollten.
punkt 1 und 2 sind mir wichtig aber punkt 3 währe dann das i-tüpfelchen.
damit könnte ich mir dann eine art Shortcut tastatur basteln.
oder sowas wie einen USB-Fußtaster für Push to Talk.
p.s. das empfangen und verarbeiten der seriellen daten ist kein problem.
hoffe mir kann da wer helfen und erklären.
am besten auch mit links zu deutschsprachigen quellen die nicht msdn lauten.
der aufbau und die beispiele bei msdn sind mir nicht verständlich genug, bin anfänger.
gruß, avoid
Moderiert von Th69: Titel korrigiert.
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Sa 20.08.11 18:56
zusätzlich eingebunden:
C#-Quelltext 1: 2:
| using System.Diagnostics; using System.Runtime.InteropServices; |
zu 1. habe ich rausgefunden, wie ich einen fremden prozess aus und wieder ein blenden kann.
global deklariert:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| [DllImport("User32")] private static extern int ShowWindow(int hwnd, int nCmdShow);
private const int SW_HIDE=0; private const int SW_SHOW = 5; private const int SW_RESTORE = 9; int hWnd; Process[] processRunning = Process.GetProcesses(); |
weil ich die prozesse nur zu beginn aufrufe klappt es auch mit dem show und restore.
das setzt aber vorraus das die zu versteckende anwendung zu diesem zeitpunkt bereits offen ist,
andernfalls müßte ich weitere angaben abrufen um den ausgeblendeten prozess wieder zu finden.
ich hab nur noch nicht raus gefunden wie ich damit den focus auf eine anwendung bekomme
ohne meine oder die ziel anwendung in den fordergrund zu rufen.
die tastatureingaben meiner externen taster sollen nicht an den aktiven prozess im fordergrund
sondern nur an bestimmte prozesse gesendet werden damit sie das normale arbeiten nicht behindern.
zum ausblenden:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| foreach (Process pr in processRunning) { if (pr.ProcessName == "notepad") { hWnd = pr.MainWindowHandle.ToInt32(); ShowWindow(hWnd, SW_HIDE); } } |
zum einblenden:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| foreach (Process pr in processRunning) { if (pr.ProcessName == "notepad") { hWnd = pr.MainWindowHandle.ToInt32(); ShowWindow(hWnd, SW_SHOW); ShowWindow(hWnd, SW_RESTORE); } } |
alternativ kann man um einiges einfacher die eigene anwendung bzw.
das jeweilige formular ein und ausblenden wie folgt:
C#-Quelltext 1: 2: 3: 4:
| this.Hide(); this.Show(); this.WindowState = FormWindowState.Normal; |
zu 2. hab ich rausgefunden, SendKeys.Send() schickt seine nachricht an das aktive fenster.
eine aktuelle auflistung möglicher tastatureingaben die man senden kann gibt es in der msdn.
msdn.microsoft.com/d...s.sendkeys.send.aspx
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| try { SendKeys.Send("%{F4}"); } catch { } |
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Do 25.08.11 12:43
ich stell meine frage mal auf beantwortet weil ich das problem jetzt gelöst habe.
lösung ist im grunde aus den schon geposteten code schnipseln entstanden
aber in kombination mit unmengen anderer bruchstücke.
sprich, ich will mir nicht noch die arbeit machen das alles zu zerlegen
und zu dokumentieren, jetzt wo es läuft.
trotzdem danke.
|
|
mo0n_
      
Beiträge: 50
Win7
C#
|
Verfasst: Di 06.09.11 11:17
1. das sie zu arbeiten hat obwohl sie nicht das aktive fenster ist.
ich glaub sowas könnte mit dem backgroundworker gehen oder?
2. das sie beim empfang bestimmter werte über den serialport,
so tut als ob bestimmte tasten auf der tastatur gedrückt worden sind.
3. das sie die gedrückten tasten an bestimmte anwendungen sendet,
auch wenn diese im hintergrund sein sollten.
Keylogger  ?
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Di 04.10.11 13:16
nein kein kaylogger der würde anders funktionieren.
konkret geht es um die möglichkeit eine schaltung mit einer art selbstgebauter tastatur (Beispiel: PTT per Fußtaster, CarPC, Flug und Auto Simulation) zu nutzen um einen PC und darauf ausgewählte programme und funktionen zu steuern.
aber eben nicht alles auf dem PC sondern nur eine bestimmte software oder bestimmte windwos eigene funktionen wie z.b. lautstärke.
die selbstgebaute schaltung steckt über USB an einem Virtuellen Serialport und gibt die tastencodes an den PC aus.
der muß diese jederzeit erkennen und jederzeit an die eingestellte windows fukntion oder software weiter reichen als hätte man eine taste auf der richtigen Tastatur gedrückt.
anders rum soll es irgendwann auch klappen, zum steuern von schaltungen vom PC aus, aber das is nicht so wichtig.
|
|
avoid 
      
Beiträge: 230
Erhaltene Danke: 4
MSDos, WinXP32, Win764, Win10, Android, Debian
msl (mIRC edit), html & php & Java (DreamweaverMX), Basic (picaxe PE6), C (Arduino IDE), C# (vs2010,2015,2017,2019,Unity,Android Studio)
|
Verfasst: Di 19.06.12 14:43
ich hab das thema mal wieder auf gemacht,
weil ich oben genannten punt 3 jetzt doch noch rein basteln will.
sprich wie setze ich den focus auf eine anwendung bzw. ein formular das im hindergrund oder sogar versteckt ist
und wieder zurück ohne diese hintergrund anwendung in den vordergrund zu rufen.
also eine möglichkeit wie "SetForegroundWindow(prozess.MainWindowHandle)"
ohne die anwendung bzw. das das formular in den vordergrund zu ziehen
und trotzdem mit "SendKeys.Send("Test");" oder ähnlichem eingaben an einen prozess zu senden.
---edit--- text umformuliert.
_________________ Gute Fragen sind wie ein wissenschaftliches Experiment. Sie setzen eine Menge Wissen bereits voraus.
bitcoin:1J5dgQQp8eUy8wkUxyztBUVCkCpo5MQEQs?label=Danke
|
|
|