Seite 1 von 1

Text in eine andere Anwendung übergeben

Verfasst: 24.11.2008 00:03
von X360 Andy
Moin zusammen

Ich bin zur Zeit am überlegen wie man das am besten machen könnte und zwar folgendes Beispiel:

Program 1 hat ein Stringgadget und ein Buttongadget
Program 2 hat nur ein Stringgadget

Wenn ich in Prog. 1 "Hallo" eingebe und dann auf den Button drücke , soll der Inhalt in das Stringgadget von Prog. 2 übergeben werden.

Wie kann ich das am besten realiesieren ?
Das Tut auf Purearea.net BytePatcher geht bei mir nicht ( habs auf 4.20 umgeschrieben aber geht trotzdem nicht )


Mfg
:mrgreen:

Re: Text in eine andere Anwendung übergeben

Verfasst: 24.11.2008 01:42
von Kiffi
X360 Andy hat geschrieben:Program 1 hat ein Stringgadget und ein Buttongadget
Program 2 hat nur ein Stringgadget
beides von Dir geschriebene Programme?

Grüße ... Kiffi

Re: Text in eine andere Anwendung übergeben

Verfasst: 24.11.2008 01:50
von X360 Andy
Kiffi hat geschrieben:
X360 Andy hat geschrieben:Program 1 hat ein Stringgadget und ein Buttongadget
Program 2 hat nur ein Stringgadget
beides von Dir geschriebene Programme?

Grüße ... Kiffi
Nein das 2te Program nicht, das könnte z.b ein ICQ oder MSN Message Fenster sein.(nur ein Beispiel)


Sonst wüsste ich wie man es machen könnte (Createfile()-->Readfile())

Re: Text in eine andere Anwendung übergeben

Verfasst: 24.11.2008 08:13
von Kiffi
X360 Andy hat geschrieben:Nein das 2te Program nicht, das könnte z.b ein ICQ oder MSN Message Fenster sein.
dann benötigst Du zuerst das Adresse (=Handle (hWnd)) des Textfeldes, in
das Du etwas eintragen willst. Diese ist natürlich von Anwendung zu
Anwendung verschieden.

Danach ist es relativ einfach:

Code: Alles auswählen

DeinText.s = "Hallo Welt!"
SendMessage_(hWnd, #WM_SETTEXT, 0, @DeinText)
Grüße ... Kiffi

Verfasst: 24.11.2008 09:25
von X360 Andy
Gibt es eine einfache moglichkeit die hWnd herauszufinden ?
Habs grad an vielen Programen getestet.
Beim Editor mit "Notepad" "Editor" "Unbenannt - Editor" .......
Bekomme bei dem Code immer die "0" /:->

Code: Alles auswählen

DeinText.s = "Hallo Welt!"
If SendMessage_("Editor", #WM_SETTEXT, 0, @DeinText)
Debug 1
Else 
Debug 0 
EndIf

Danke dir aber schon mal :allright:

Verfasst: 24.11.2008 11:28
von Kiffi
X360 Andy hat geschrieben:Gibt es eine einfache moglichkeit die hWnd herauszufinden ?
für die ersten Test kannst Du folgenden (leicht modifizierten) Code aus der PB-Hilfe nehmen:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 300, 100, "Desktop Maus-Monitor", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  CreateGadgetList(WindowID(0))
  TextGadget(0, 10, 6, 200, 20, "")
  TextGadget(1, 10, 26, 200, 20, "")
  
  Repeat
    Event = WindowEvent()
    
    If Event = 0 ; Es sind keine Ereignisse mehr in der Warteschleife, daher halten wir den Prozess
      ; für ein paar Millisekunden an, um das Multitasking nicht zu beeinträchtigen
      SetGadgetText(0, "Desktop Maus-Position: "+Str(DesktopMouseX())+","+Str(DesktopMouseY()))
      SetGadgetText(1, "hWnd: " + Str(WindowFromPoint_(DesktopMouseX(),DesktopMouseY())))
      Delay(20)
    EndIf
    
  Until Event = #PB_Event_CloseWindow
EndIf
Allerdings: Die Handles werden bei Programmstart vergeben. Es ist also
extrem wahrscheinlich, dass das Handle 123 für Textbox XYZ beim
nächsten Start des Programmes 456 oder 789 ist (die Zahlen sind jetzt
natürlich nur als Beispiel aufgeführt).

Um Dir Dein Handle sicher zu ermitteln, musst Du i.d.R. erst einmal das
Parent-Fenster ermitteln, in dem die besagte Textbox liegt und Dich dann
über alle Container (sofern vorhanden) 'hinunterhangeln'.
X360 Andy hat geschrieben:Beim Editor mit "Notepad" "Editor" "Unbenannt - Editor" .......
Bekomme bei dem Code immer die "0" /:->
wie kommst Du denn darauf, dass "Editor" das hWnd des Notepad ist?
Hier muss immer eine Zahl angegeben werden.

Grüße ... Kiffi

Verfasst: 24.11.2008 17:45
von X360 Andy
Kiffi hat geschrieben: wie kommst Du denn darauf, dass "Editor" das hWnd des Notepad ist?
Hier muss immer eine Zahl angegeben werden.

Grüße ... Kiffi
Hab mich vertann , dachte das wäre der Program NAME (Title$)



Danke für das Beispiel

:D