![]() |
Zitat:
hMDIChildAcHisEd := FindWindowEx(hMDIChildAccHis,0,'_T_Edit',NIL); // ins 1.Edit Feld den Eintrag machen SendMessage(hMDIChildAcHisEd,WM_SETTEXT,0,integer( PChar(ComboBox2.Text))); // Cursor in das 2. Edit Feld positionieren postmessage(hMDIChildAcHisEd,wm_KeyDown,integer(PC har(#9)),0); - nun soll dort wo der Cursor steht der Inhalt von ComboBox1 eingefügt werden - so mache ich das bisher, das zweite Editfeld ist ebenfalls "_T_Edit" - die selben Werte wie das erste und das ist mein Problem. Deshalb das TAB simulieren um in das nächste _T_Edit zu kommen - insgesamt sind es 5 ! _T_Edit Felder ( brauche aber nur die ersten zwei - wobei ich das Handle vom ersten ja habe und auch schon meinen Eintrag gemacht habe ) Gruß, Dirk |
Zitat:
Bei Delphi müßte WinSight dabei liegen. Mit der Anwendung kannst du die ID'S der Kontrolls rausfinden. Alternativ nimm Spy++ vom Visual Studio oder WindowInfo von meiner Seite. |
Unter Visual Basic gibt es einen Befehl namens SendKey oder SendKeys, mit dem man einfach die Tastatur "emulieren" kann, d.h. der übermittelte Text erscheint dort, wo er erscheinen würde, wenn er über die Tastatur eingegeben würde. Gibt es so etwas eventuell auch unter Delphi? VB ist es nämlich egal, welches Fenster aktiv ist. Es sendet einfach den Text, ohne dass man sich darum kümmern muss, wo er hingeht.
|
Zitat:
Die gesamten ID's sind bei den Editfeldern DIESELBEN ausser das Handle (0x000F073A) und das erste hat (0x000407F4) Gruß, Dirk |
Das Handel kannst du vergesen, das ändert sich ja jedes mal. das mit den ID's ist dann natürlich ärgerlich. Wie hast du die denn ermittelt? Und was ist das überhaupt für ein Programm?
|
Zitat:
also, die bisherigen Klassennamen oder Captions habe ich mit einem Tool gefunden, dass so ähnlich ist wie dein WinInfo.. nur das es die Hirarchie in einem TreeView anzeigt. Dann hab ich mich nurnoch durch die Hirarchie gehangelt ( FindWindow und dann FindWindowEx ) bis ich am gewünschten Ziel war ( in meinem Fall das erst Edit - Feld ) das Programm das ich entwickle, soll Arbeitsprozeduren automatisieren. z.B. du bist BETA Tester und hast eine Datenbank mit deinen Testergebnissen (nur als Beispiel)... in 12 dieser Felder machst DU immer die selben Einträge, dies kostet Zeit und vorallem Nerven... um das zu automatisieren kommt mein Programm ins Spiel, dass auf Knopfdruck die bestimmten Daten in die Felder einfügt, wo du sie ansonsten per Hand eintippen musst. Das Problem an der Sache ist nur, dass die Felder die selbe Fensterklasse haben (bei einer normalen Datenbank wäre das nicht der Fall) und ich dann eben mit TAB die Felder "anspringe" die ich brauche um einen Eintrag zu machen. Wenn ich also nun ein solches Feld "angesprungen" habe und der Cursor dort platziert ist, möchte ich an diese Position einen Text senden... und genau da liegt mein Problem.. wie kann ich Text an die aktuelle Cursorposition senden innerhalb einer Fremdanwendung. Ich hoffe das war halbwegs verständlich :D Gruß, Dirk |
Da das Edit-Feld den Fokus hat, könnte das mit SendKeys klappen, such einfach mal bei Google nach dieser unit.
|
Hab die Lösung gefunden falls es jemand mal braucht..
Also ich hab mir einfach ne Funktion geschrieben, (nachdem das erste Edit Feld nach Hirarchie durchhangeln gefunden wurde) die in das nächste Editfeld "Jumpt"
Delphi-Quellcode:
dann folgendermassen ausgeführt:
function jmpwnd(hand:hwnd;anz:integer):hwnd;
var i:integer; begin for i:=1 to anz do hand:=getwindow(hand,gw_hwndnext); jmpwnd:=hand; end;
Delphi-Quellcode:
Falls jemand mal das Problem mit gleichnamigen Klassennamen von Feldern haben sollte und in ein bestimmtes nen Eintrag machen will bzw. das Handle haben will.
hMDIChildAcHisEd := FindWindowEx(hMDIChildAccHis,0,'_T_Edit',NIL);
if hMDIChildAcHisEd <> 0 then begin //Wenn gefunden - Eintrag machen SendMessage(hMDIChildAcHisEd,WM_SETTEXT,0,integer(PChar(ComboBox2.Text))); //Handle vom ERSTEN Edit Feld finden... history:=FindWindowEx(hMDIChildAccHis,0,'_T_Edit',NIL); //...spring in das ZWEITE Edit Feld history:=jmpwnd(history,2); // ins 2.Edit Feld den Eintrag machen SendMessage(history,WM_SETTEXT,0,integer(PChar('ComboBox3.Text))); Gruß, Dirk |
Re: In Fremdanwendung Text an die aktuelle Cursorposition se
wie setzte ich denn text AUS einem Edit IN eine fremdanwendung ? sprich: bspw. in einen chat ins <input ...> feld ?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz