Laden...

Textboxen von andren Programmen benutzen

Erstellt von Ayke vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.567 Views
Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren
Textboxen von andren Programmen benutzen

Hi
Ich wollt euch mal fragen ob ich Textboxen von andren benutzen kann Z.B Um eine Nummer zu wählen am besten noch das dies im hintegrund passiert ohne das ich das fenster die ganze zeit im vodergrund haben muss.

M
1.439 Beiträge seit 2005
vor 17 Jahren

Mit der Windows API & FindWindowEx sollte es gehen.

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

kanst du mir das etwas genauer beschreiben, vielleicht einen ganz knapen code zeigen der eine Textbox von einen andren Programm vollschreibt

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

HALLLLLOOOOO ?(

PLEASE HELP 😉

3.728 Beiträge seit 2005
vor 17 Jahren
Windows-API

Das ist nicht ganz so einfach. Du musst den Window-Handle (HWND) der Textbox kriegen (mittels FindWindow etc.). Dann kannst Du mittels SendMessage Window-Nachrichten an die Textbox Schicken.

Hier hat das schon jemand in ähnlicher Weise gemacht:
textbox -> zeichen vom ende abschneiden

P.S.: Bitte nicht "schreien", wenn Du nicht sofort eine Antwort bekommst. 😉

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

ich hab mir das nciht einfach vorgestellt aber ich komm damit überhaupt nicht klar und ich hab nicht viel zeit ein programm in die wirklichkeit umzusetzten (deshalb stelle ich auch hier so viele fragen) nja kann mir jemand ansatzweise zeigen wie ich von einer Textbox die Hwnd bekomme und dort eine Text einsetzte und den dan bestatige z.b mit Enter aber am besten so das ich neben bei wen das programm leuft andre sachen am meinen pc machen kann anstat das beide programme die ganze zeit aufhabe und mein bildschirm anstarren muss ?

M
1.439 Beiträge seit 2005
vor 17 Jahren

Nur keinen Stress, bei so einem schönen Wetter sitzt ja keiner vorm PC 😉 .
Schau dir mal http://www.codeproject.com/tools/windowspy.asp an, dieses Programm tut unter anderem das, was du suchst. Da kannst dir auch die Implementierung dazu ansehen.
oder sieh dir diesen C Code an.


int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
            LPSTR lpCmdLine, int nCmdShow) {
  HWND ie = FindWindowEx(NULL, NULL, "IEFrame", NULL);
  HWND wrk, tb, cbx, cb, url;

  if (ie == NULL) {
    MessageBox(NULL, "Run IE, or else.", "Huhu!", MB_OK | MB_ICONEXCLAMATION); 
    return 0;
  }

  wrk = FindWindowEx(ie, NULL, "WorkerW", NULL);
  tb  = FindWindowEx(wrk, NULL, "ReBarWindow32", NULL);
  cbx = FindWindowEx(tb, NULL, "ComboBoxEx32", NULL);
  cb  = FindWindowEx(cbx, NULL, "ComboBox", NULL);
  url = FindWindowEx(cb, NULL, "Edit", NULL);

  SendMessage(url, WM_SETTEXT, NULL, "http://www.dingens.org";);
  PostMessage(url, WM_SETFOCUS, 0, 0);
  PostMessage(url, WM_KEYDOWN, VK_RETURN, 0);

  return 0;
}

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

versteh da zwa nix auser wo ich meine werte eintagen muss danke👍 😁

3.728 Beiträge seit 2005
vor 17 Jahren
Genau

Zur Erklärung: Die angesprochenen Funktionen (FindWindowEx, SendMessage) sind Win32-API-Funktionen. Diese musst Du mittels [DllImport] in Deinen Code einbinden. Wie man das macht, findest Du hundertfach hier in der Forumssuche (Suchwörter: [DllImport], Win32 API). Einmal im Code deklariert, kannst Du diese Funktionen wie normale C#-Methoden aufrufen. Mit FindWindowEx kannst Du ein Fenster (also auch eine Textbox, welche im Sinne der Win32-API ein Fenster ist) anhand bestimmter Merkmale finden. Als Ergebnis der Suche bekommst Du den Handle (Die eindeutige Kennung im Arbeitsspeicher) des Fensters. Über SendMessage kannst Du Nachrichten (Befehle) an das Fenster senden (z.B. die Zeichen, die eingegeben werden sollen).

Folgender MSDN Artikel befasst sich mit dem Thema:

http://www.microsoft.com/germany/msdn/library/net/windowsforms/AutomatisierenVonWindowsForms.mspx

Wo klemmts denn genau? Hast Du den Handle der TextBox, oder scheitert es bereits daran?

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

ich muss schauen sonst poste ich meien probleme

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

jo hab probleme unzwa wie kann ich c in c# benutzen und kann ich eine anwendung die
nur einmal startet dazu bringen so oft zu starten wie ich will. Was schreib ich in die Header Zeile, bei C muss doch auch ein verweis zu einer biblothek folgen ?

S
8.746 Beiträge seit 2005
vor 17 Jahren

Original von Ayke
jo hab probleme unzwa wie kann ich c in c# benutzen

Gar nicht.

und kann ich eine anwendung die
nur einmal startet dazu bringen so oft zu starten wie ich will.

Auch nicht.

Was schreib ich in die Header Zeile, bei C muss doch auch ein verweis zu einer biblothek folgen ?

Die Frage offenbart, dass du eigentlich gar keine Kenntnisse von C# oder .NET hast. Da empfehle doch erstmal ein wenig Einsteigerliteratur.

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

Was hat das mit c# zu tun ?( ?( NIXXX !! Ich rede über c und für die win api brauch ich eien biblothek

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

ich glaub ich krieg das trozdem nicht hin. der jenige mir ein programm bastelt das an 5 programmen eine message in eine combobox sendet bekommt 20 eu von mir.

L
25 Beiträge seit 2006
vor 17 Jahren

Du musst die Winapi/dll-Funktionen in einer Klasse kapseln um sie aus c# aufzurufen.
http://dotnet-snippets.de/dns/Snippet_detail.aspx?=28

Das C-Beispiel sollte dir nur verdeutlichen wie die Funktionen, die du brauchst, aufgerufen werden.

Den Namen des Fenters/Textfeld kriegst du mit beispielsweise Spy++ raus.

0x0D 0x0A

Ayke Themenstarter:in
643 Beiträge seit 2006
vor 17 Jahren

ok danke