Autor |
Beitrag |
Seraph
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Mi 21.09.05 13:14
Hey Leute!
Ich hoffe ein paar Freaks hier können mir weiterhelfen!
Ich versuche nur ganz simpel einen String (wie zum Beispiel 'Hallo') in die Adressleiste
vom IEX oder Arbeitsplatz zu übernehmen! Das muss doch gehen!
Und eigentlich müssten die Adressleisten von den ganzen WindowsProgs auf den selben Befehl anspringen oder irre ich mich?
Gruß Andy
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Mi 21.09.05 13:27
Delphi-Quelltext 1:
| SetWindowText(FindWindow(nil,'Arbeitsplatz'),'Hallo'); |
du musst nur den Aktuellen Text wissen oder den klassennamen
//addressleiste flasch gelesen ;P
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Zuletzt bearbeitet von uall@ogc am Mi 21.09.05 13:34, insgesamt 1-mal bearbeitet
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Mi 21.09.05 13:33
Das Problem ist folgendes!
Ich habe mein Problem auch etwas Falsch geschildert!
Kann ich einen Text an meinem Cursor einfügen, egal in welchem Textfeld er gerade ist?
Ähnlich wie diese Windows Bildschirmtastatur!
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Mi 21.09.05 13:36
such mal hier imforum nach
KEYBD_EVENT
da solltest genug finden
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Mi 21.09.05 14:00
Titel: Schritt 1 hat geklappt
Danke erstmal für die Hilfe!
Ich hab zur Zeit voll den Durchhänger!
Damit du weißt, was ich gerade Programmiere:
Ich habe eine Tastatur Programmiert, die alles was ich schreibe, ins gerade Aktive bzw. Global gefokuste Textfeld schreiben soll!
Dazu müsste ich aber erstmal rausfinden, welches Fenster überhaupt zur zeit geöffnet bzw. Angewählt ist! Zum Beispiel die IEXPLORER Adressleiste!
Du bist schon lange im Geschäft! Ich glaube das du mir weiterhelfen könntest!
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: Mi 21.09.05 14:43
Also :
Mit
windows.GetForegroundWindow; bekommt man das Fenster das vorne ist!
Dann mit GetWindowText kann man auch noch das Fenstercaption abrufen!
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Mi 21.09.05 14:47
Titel: Missverständnis
Ich glaube wir reden ein bisschen aneinander vorbei!
Meine Frage war ja, wie ich den Text in der Adressleiste eines Fensters verändern kann, mit der Caption weiß ich doch nichts anzufangen, brauch ich daher auch nicht!
_________________ Wer früher stirbt ist länger tot!
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Mi 21.09.05 15:02
Titel: Re: Missverständnis
Kennt jemand vielleicht eine WinApi, mit der ich Tasteneingaben Simulieren kann?
Wäre cool wenn mir da jemand weiterhelfen könnte!
_________________ Wer früher stirbt ist länger tot!
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: Mi 21.09.05 15:06
Such mal nach:
KEYBD_EVENT
Damit gehts!
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Mi 21.09.05 15:09
Ich kann nichts machen, diese Keybd Kacke funzt bei mir hinten und forne nicht!
Ich krieg für 97 statt a eine Eins! Das ist nicht normal!?
_________________ Wer früher stirbt ist länger tot!
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: Mi 21.09.05 15:19
Delphi-Quelltext 1: 2: 3:
| keybd_event(windows.VkKeyScan('a'),0,0,0); keybd_event(windows.VkKeyScan('a'),0,KEYEVENTF_KEYUP,0); |
so gehts!
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Do 22.09.05 07:58
Titel: Was soll bei keybd_event... passieren?
Sorry, bei mir funzt das immernoch nicht!
Drum schreibe ich ja hier! Wenn die Lösung so simpel wäre,
hätte ich mich hier garnicht erst eingeloggt!
Also ich sag dir jetzt mal, was passiert wenn ich das mache:
Delphi-Quelltext 1: 2: 3:
| keybd_event(windows.VkKeyScan('a'),0,0,0); keybd_event(windows.VkKeyScan('a'),0,KEYEVENTF_KEYUP,0); |
Es passiert einfach nichts!
Was sollte denn passieren????
_________________ Wer früher stirbt ist länger tot!
|
|
hallo
      
Beiträge: 450
WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
|
Verfasst: Do 22.09.05 13:14
Set mal deinen Focus auf ein EditFeld oder sowas ähnliches.
Als nächstes Lässt du diesen Code über einen Timer aufrufen. Der Focus muss immer noch im Editfeld sein! Nun wird ein a geschrieben!
_________________ Der beste je Programmierte Trojaner: Windows XP
Wäre es nicht adequat, den Usus heterogener Termini zu minimieren?
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Do 22.09.05 13:26
ja gut! Das funzt jetzt wenigstens!
Aber jetzt habe ich wiederum ein ganz andres Problem!
Die Buchstaben sollen mit hilfe einer Virtuellen Tastatur (mein Programm) geschrieben werden!
Was glaubst du wird passieren, wenn ich mein Programm anklicke!
Sprich den Fokus vom Textfeld wegnehme?
Hab ichs mir gedacht! Das Programm macht dann nurnoch einen alten Scheiß!
Ich habe jetzt eine schlechte ersatzlösung gefunden:
Man giebt etwas über die Virtuelle Tastatur ein, diese hat ein integriertes Textfeld!
Man bestätigt dann den eingegeben Text und der wird dann nach ein paar sekunden
(Zeit um in die Adressleiste des InternetExplorers zu drücken!) in seine einzelnen Zeichen zerlegt!
Diese werden dann als Globaler Tastendruck simuliert! (Keybd_Event)
Ich finde jedenfalls so schnell keine Lösung für das Problem, das ich jetzt habe..
Grüße Seraph
Zuletzt bearbeitet von Seraph am Do 22.09.05 13:32, insgesamt 1-mal bearbeitet
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 22.09.05 13:32
im sourcecode von SMILEMASTER findest du eine sendkeys unit und code um die keys an das fokusierte window zu senden.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Do 22.09.05 13:37
Das Problem ist ja, dass das Fenster wo die Buchstaben von meiner Virtuellen Tastatur hinsollen nicht mehr Fokusiert ist, nachdem ich meine Tastatur angeklickt habe! (Logisch)
Das ist das Problem, falls es noch nicht nachvollziehbar sein sollte:
1. Arbeitsplatzadressfeld = focused;
2. Virtuelle Tastatur wird angeklickt (um etwas einzugeben);
3. Arbeitsplatzadressfeld <> focused;
4. Virtuele Tastatur = focused;
Grüße
Seraph
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 22.09.05 13:41
dann mach das mit nem hotkey, wie smilemaster 2005. dann ändert sich der focus nicht
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Do 22.09.05 13:47
Und wie stellst du dir das mit dem HotKey vor???
Das ich den Text in meinem Programm dann an den Cursor setze, wenn ich eine Bestimmte Taste drücke?
Du weißt doch hoffentlich, was eine Virtuelle Tastatur ist, die benutzt man, weil man keine richtige Tastatur hat!
Die brauchen Leute, die in ihrer Bewegungsfähigkeit stark eingeschränkt sind!
Oder, so wie in meinem Fall, braucht man sie, weil ich an einem Pc mit Touchscreen arbeite!
|
|
retnyg
      
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 22.09.05 13:49
dann nimm nen timer der mit der GetSysFocus prozedur alle paar ms das aktive fenster in ne liste schreibt. sobald der focus dann auf deinem prog ist, schickst du den input an das zuletzt aktive fenster. wenn du den code aus SM 2005 nimmst haste vielleicht noch 10 minuten arbeit das bei dir zu implementieren.
_________________ es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
|
|
Seraph 
      
Beiträge: 163
Windows.:siXPack:.
Delphi7 Professional
|
Verfasst: Do 22.09.05 13:56
(Du denkst dir jetzt bestimmt, ist der überlästig)
Der Vorschlag ist sehr gut! Man muss jedoch alles bedenken!
Das funktioniert wohl, solange nur diese zwei fenster miteinander komunizieren müssen!
Aber ich klicke mal zwischen verschiedenen Fenstern rum! Und bekomme immerwieder den Fokus auf das Feld, in dem ich gerade geschrieben habe!
Das heißt jetzt nicht das deine Idee nicht funktioniert hat!
Nur ist es auch nicht die perfekte Lösung!
Es gibt eine Virtuelle Tastatur von Windows, aber die ist für meinen Zweck zu klein und ich kann ihre position nicht beliebig bestimmen! (über Quellcode)
Darum brauch ich ne eigene, bessere!
_________________ Wer früher stirbt ist länger tot!
|
|