Seite 1 von 1

Stringgadget() von anderen Programm

Verfasst: 26.07.2011 13:49
von Tsuki-Namida
hallo,
ich möchte ein Stringgadget() auseinemanderen programm auslesen...

ich habezwarversuchr überdas PureBoard was zu finden aber ich habe wohlnicht die richtigen suchbegriffe parat.... oder es wurde wirklich noch nicht angefragt....

ich hoffe das mir jemand helfen kann den stringgadget auszulesen....
danke

Re: Stringgadget() von anderen Programm

Verfasst: 26.07.2011 13:54
von RSBasic
Du musst zuerst die Handle-Nummer des Fensters und des Controls ermitteln. Diese kannst du mit FindWindow_() und FindWindowEx_() ermitteln. Wenn du die Handle-Nummer hast, dann hast du auch Zugriff drauf und kannst beispielsweise den Inhalt auslesen.
Beispiel: http://www.rsbasic.de/aktualisierung/wi ... mitteln.pb

Zum Ermitteln der Informationen für die Verwendung von FindWindow(Ex)_() sind folgende Anwendungen hilfreich:
http://www.rsbasic.de/temp/ShoWin.exe
http://www.rsbasic.de/temp/WinSpy.exe

Re: Stringgadget() von anderen Programm

Verfasst: 26.07.2011 14:15
von Tsuki-Namida
okay das heandling habe ich.... wiekomme ich jetzt auf rischtigen inhalt des stringgadgets? es sind insgesammt 3 stinggadgets verfügbar

Re: Stringgadget() von anderen Programm

Verfasst: 26.07.2011 14:25
von RSBasic
Wenn du die Anwendung "WinSpy" heruntergeladen und gestartet hast, dann kannst du mit Hilfe des Picker-Tool "Window Picker" mit der gerdrückten Maustaste auf deine geschwünschte Leiste (StringGadget) schieben und dann erhälst du im WinSpy-Fenster die gewünschten Informationen:
Bild

Die erste Information ist das Hauptfenster der Anwendung. Dadrunter ist dein StringGadget "Edit". Nun kannst du mit Hilfe dieser Information dein Control finden, um die Handle-Nummer zu ermitteln. Wie das funktioniert, kannst du aus dem Beispielcode (s.o.) entnehmen. Und das Auslesen ebenfalls. Du musst nur die Namen anpassen.
Wenn es mehrere Edit-Controls gibt, kannst du zum nächsten Control springen, um die Handle-Nummer zu ermitteln:

Code: Alles auswählen

GetWindow_(handle,#GW_HWNDNEXT)

Re: Stringgadget() von anderen Programm

Verfasst: 26.07.2011 16:20
von Tsuki-Namida
ich bekomme es irgentwie nicht hin -.-

ich habe zwar GetWindow_(handle,#GW_HWNDNEXT) genommen aber ich bekomme , egal wie offt ich den gefehl einsetze, das selbe ergebnis zurück....
die variable habe ich mit der variable "hwnd" ersetzt....
hier noch mal der geänderete code ausschnit...

Code: Alles auswählen

      If hwnd
        subhwnd=FindWindowEx_(hwnd, #Null, "Edit", #Null)
        Debug subhwnd
        If subhwnd
          hwndlength = SendMessage_(subhwnd, #WM_GETTEXTLENGTH, 0, 0)+1
          content$ = Space(hwndlength)
          SendMessage_(subhwnd, #WM_GETTEXT, hwndlength, @content$)
          MessageRequester("","Inhalt des Editors: "+content$,0)
        EndIf
      EndIf
ach ja "Edit" kommt 3 mal vor...

Re: Stringgadget() von anderen Programm

Verfasst: 26.07.2011 16:30
von RSBasic

Code: Alles auswählen

EnableExplicit

Define EventID
Define hwnd
Define subhwnd

Procedure.s GetControlContent(Handle)
  Protected hwndlength
  Protected content$
  
  hwndlength = SendMessage_(Handle, #WM_GETTEXTLENGTH, 0, 0)+1
  content$ = Space(hwndlength)
  SendMessage_(Handle, #WM_GETTEXT, hwndlength, @content$)
  
  ProcedureReturn content$
EndProcedure

If OpenWindow(0,0,0,500,400,"WindowXYZ",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  StringGadget(1,10,10,200,20,"Test 1",0)
  StringGadget(2,10,40,200,20,"Test 2",0)
  StringGadget(3,10,70,200,20,"Test 3",0)
  
  hwnd = FindWindow_(#Null,"WindowXYZ")
  If hwnd
    subhwnd=FindWindowEx_(hwnd, #Null, "Edit", #Null)
    If subhwnd
      Debug GetControlContent(subhwnd)
      subhwnd = GetWindow_(subhwnd,#GW_HWNDNEXT)
      Debug GetControlContent(subhwnd)
      subhwnd = GetWindow_(subhwnd,#GW_HWNDNEXT)
      Debug GetControlContent(subhwnd)
    EndIf
  EndIf
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: Stringgadget() von anderen Programm

Verfasst: 26.07.2011 16:42
von Tsuki-Namida
haaaa okay vielen dank :) ich hätte mal dusub variable versuchen sollen......

jetzt funktioniert es :)
vielen dankk noch mal :)