Stringgadget() von anderen Programm

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Stringgadget() von anderen Programm

Beitrag 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
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Stringgadget() von anderen Programm

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Re: Stringgadget() von anderen Programm

Beitrag von Tsuki-Namida »

okay das heandling habe ich.... wiekomme ich jetzt auf rischtigen inhalt des stringgadgets? es sind insgesammt 3 stinggadgets verfügbar
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Stringgadget() von anderen Programm

Beitrag 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)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Re: Stringgadget() von anderen Programm

Beitrag 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...
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Stringgadget() von anderen Programm

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Re: Stringgadget() von anderen Programm

Beitrag von Tsuki-Namida »

haaaa okay vielen dank :) ich hätte mal dusub variable versuchen sollen......

jetzt funktioniert es :)
vielen dankk noch mal :)
Bild
Antworten