Autor Beitrag
Franz65
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Fr 01.08.14 14:06 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
void BtStartClick(object sender, EventArgs e)
{
  System.Threading.Thread.Sleep(4000);
  SendKeys.SendWait("{ENTER}hello{TAB}hello");

  // Steuerung und N gleichtzeitig drücken.

  SendKeys.SendWait("%{F4}");
  SendKeys.SendWait("{TAB}");
  SendKeys.SendWait("{TAB}");
  System.Threading.Thread.Sleep(500);
  SendKeys.SendWait("{ENTER}");
  this.Close();
}


Ich möchte seit heute Vormittag ein Programm erstellen, welches ein anderes "fernsteuert", um mir oftmals unnötiges manuelles herumgeklickse zu ersparen. Oben habe ich einen Testteil angeführt, in welchem ich die benötigten Befehle zum Versuchen angeführt habe. Leider weiß ich nicht, wie ich die Tastenkombination "Steuerung + N" gleichzeitig "drücken" kann. Ich habe bereits danach gesucht, allerdings mit ausbleibendem Erfolg. SendKeys.SendWait("^N") hat bei mir nicht funktioniert.

Ich freue mich über Eure Hilfe, danke
Franz

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4795
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 01.08.14 14:26 
Hallo Franz,

welches Programm möchtest du fernsteuern? Sollte es sich dabei um eine Spiel handeln, wird das mit den SendKeys-Methoden nicht funktionieren, da diese meistens direkt DirectInput o.ä. benutzen (und nicht die Windows Message Loop).

Oder klappen die anderen Tastaturkommandos und nur "Strg+N" nicht (denn "^N" wäre die richtige Schreibweise dafür, s. SendKeys)?

PS. Bedenke, daß generell die zu steuernde Anwendung aktiv den (Tastatur-)Fokus besitzen muß, damit SendKeys funktioniert.
Franz65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Fr 01.08.14 14:38 
Danke,

für deine Hilfe. Ich möchte in diesem Fall kein Spiel steuern. Es handelt sich um eine Kalkulationssoftware. Da ich derzeit keinen Zugriff auf das betreffende Programm habe (bin nicht vor Ort) kann ich dieses leider nicht direkt testen. Allerdings habe ich vorhin bereits vorsucht in dieses Programm eine Texteingabe mittels SendKeys.SendWait() zu tätigen und es hat funktioniert. Strg+N ist für die Navigation in diesem Programm erforderlich. Ich teste die Ausgaben meines Programmes derzeit einfach in Word. Das funktioniert soweit gut. Anfangs hatte ich auch mit Alt+F4 zu kämpfen, aber diese Hürde ist zum Glück bereits genommen. Jetzt stehe ich vor dem Problem Strg+N zu "drücken". Sollte ich dies lösen können, dann müsste ich auch in der Lage sein, den Code richtig an die Aufgabe anzupassen und mein Programm fertigzustellen.

Liebe Grüße
Franz
Franz65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Fr 01.08.14 14:53 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo Franz,

welches Programm möchtest du fernsteuern? Sollte es sich dabei um eine Spiel handeln, wird das mit den SendKeys-Methoden nicht funktionieren, da diese meistens direkt DirectInput o.ä. benutzen (und nicht die Windows Message Loop).

Oder klappen die anderen Tastaturkommandos und nur "Strg+N" nicht (denn "^N" wäre die richtige Schreibweise dafür, s. SendKeys)?

PS. Bedenke, daß generell die zu steuernde Anwendung aktiv den (Tastatur-)Fokus besitzen muß, damit SendKeys funktioniert.



Danke,

das habe ich ebenfalls bereits gefunden, und mehrere Quellen behaupten dies. Leider hat es bei mir noch nicht geklappt.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 01.08.14 15:01 
Zitat:
das habe ich ebenfalls bereits gefunden


Und die Notes in der Hilfe zu SendWait auch? SendWait gehört nicht gerade in die Always Working Kategorie und hängt stark davon ab welches Framework auf welchem OS in welchen Security Context verwendet wird. Heißt übrigens das wenn du mal funktionierendes hast es dich nicht davon entbindet es unter den anderen Möglichkeiten auch zu testen wenn es da auch laufen soll. Die Wahrscheinlichkeit das es unter anderen Bedingungen nicht läuft ist sehr hoch.
Franz65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Fr 01.08.14 15:47 
Mir ist schon klar, dass ich es dort, wo ich es schlussendlich verwenden möchte auch testen muss. Vorerst wäre es aber schon toll, wenn es wenigstens bei den ersten Versuchen funktionieren würde.
Wenn ich eine andere praktikable Lösung für das Problem, die Eingabe zu simulieren, kennen würde, dann würde ich diese schon verwenden.

lg
Franz
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4795
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 01.08.14 15:55 
Du könntest auch mal AutoIt ausprobieren, ob dieses funktioniert.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 01.08.14 16:02 
Zitat:
Vorerst wäre es aber schon toll, wenn es wenigstens bei den ersten Versuchen funktionieren würde.


Drum der Hinweis auf die Doku. In den Notes stehen die Schrauben an denen du drehen kannst um das Verhalten deiner Situation (die wir nicht kennen) anzupassen und die Möglicherweise den entscheidenden Unterschied machen.
Franz65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mi 06.08.14 23:45 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Zitat:
Vorerst wäre es aber schon toll, wenn es wenigstens bei den ersten Versuchen funktionieren würde.


Drum der Hinweis auf die Doku. In den Notes stehen die Schrauben an denen du drehen kannst um das Verhalten deiner Situation (die wir nicht kennen) anzupassen und die Möglicherweise den entscheidenden Unterschied machen.


Ehrlicherweise finde ich diese Dokus meist sehr unübersichtlich. Nichts destotrotz kann ich immer wieder wenigstens ein paar nützliche Informationen daraus gewinnen.

Bezüglich desen, dass Ihr meine Situation nicht kennt, möchte ich sagen, dass ich versucht habe die Eingabe in Word 2003 zu testen und Sie dort bis auf die Kombination STRG+N klaglos funktioniert. Das Zielprogramm ist eine Buchhaltungssoftware, in die mehrere identische Grundeinträge einzutragen sind, welche danach manuell, individuell bearbeitet werden. Ich möchte in Word testen, da ich dieses auf meinem PC zur Verfügung habe. Ich habe geplant es auch noch in Notepad++ zu versuchen.

Würde ich nicht an STRG+N hängen, dann hätte ich mein Programm wohl schon fertiggestellt.


------------->Beim Programmieren sind es eben oft die kleinen Dinge, welche die meiste Zeit kosten...
Franz65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mi 06.08.14 23:53 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Du könntest auch mal AutoIt ausprobieren, ob dieses funktioniert.


Sieht nach einer interessanten Lösung aus. Ich seh mir das einmal an. Ich verwende zwar gerne Lösungen, bei denen ich keine zusätzliche Software benötige, aber der Link sieht recht vielversprechend aus. Eigenartigerweise habe ich noch nicht gesehen, um welche Lizenz es sich handelt.

Selbst wenn es AutoIt funktioniert währe ich selbstverständlich weiterhin an einer Lösung mit C# interessiert, da ich diese zukünftig für weitere Problemstellungen verwenden könnte.

Danke
Franz Sixty-five


-----------------------------------------------------

Habe nun herausgefunden, dass es sich um Freeware handelt. Unter www.autoitscript.com...te/autoit/downloads/ konnte ich darüber aber nichts finden.


Zuletzt bearbeitet von Franz65 am Do 07.08.14 00:02, insgesamt 1-mal bearbeitet
Franz65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Mi 06.08.14 23:58 
Bin gerade am Testen.
Der Versuch mit Steuerung+S hat in Word 2003 und in Wordpad nicht funktioniert.
In Notepad++ hat er allerdings funktioniert. STRG+N funktioniert allerdings auch in Notepad++ nicht.
Franz65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 14.08.14 01:58 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo Franz,

welches Programm möchtest du fernsteuern? Sollte es sich dabei um eine Spiel handeln, wird das mit den SendKeys-Methoden nicht funktionieren, da diese meistens direkt DirectInput o.ä. benutzen (und nicht die Windows Message Loop).

Oder klappen die anderen Tastaturkommandos und nur "Strg+N" nicht (denn "^N" wäre die richtige Schreibweise dafür, s. SendKeys)?

PS. Bedenke, daß generell die zu steuernde Anwendung aktiv den (Tastatur-)Fokus besitzen muß, damit SendKeys funktioniert.


Hallo,

meine Testversion funktioniert nun endlich. SendKeys.SendWait("^(n)"); als auch SendKeys.SendWait("^n"); funktionieren wie gewünscht. SendKeys.SendWait("^N"); führt allerdings nicht zum gewünschten Resultat.

Für diejenigen, welchen der Unterschied jetzt nicht gleich aufgefallen ist: Das "große N" funktioniert nicht.

Liebe Grüße
Franz...Sixty-five
Franz65 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18



BeitragVerfasst: Do 14.08.14 17:37 
Hallo,

ich habe das Programm heute fertiggestellt. Es funktioniert nun wie gewünscht.

AutoIt hatte ich bereits installiert. Ich habe es aber wieder von meinem System entfernt, da ich mich nicht genug damit befasst habe um es nutzen zu können. Zudem möchte ich wie bereits oben erwähnt lieber ohne diverse externe Lösungen auskommen und dabei den Programmfluss genau kontrollieren können. Trotzdem danke für den Tipp. Vielleicht hilft er ja jemand anderes weiter.

lg
Franz