Modem Problem
-
Hi, ich habe ein Problem mit meinem Modem, es hängt sich leider andauert auf. Dabei wird die Verbindung unterbrochen und ich kann sie nicht mehr herstellen.
Bis ich meinen Rechner neu gestartet habe oder ich kann auch im Gerätemanager den Modemtreiber aktivieren und dann deaktivieren. Dann geht es wieder.Nur leider ist es recht schlecht da es sich bei dem Rechner um unseren Server handelt (Modem ist nicht für das Internet sonder einem Privaten LAN über Telefon). Ich wollte daher ein Programm schreiben mit dem ich das schnell machen kann und das von einem anderen Programm starten lassen.
Ich habe alles dafür schon geschrieben und kann jetzt von meinem Rechner den Server ansprechen und dort eben was ausführen lassen.
Nur wie kann ich jetzt in C++ mit WinApi das bewerkstelligen ich habe schon das Handle auf den Gerätemanager nur komme ich ab da nicht mehr weiter irgentwie muss ich ja in der TreeView das Modem aussuchen und dann oben in der Toolbar einen Button drücken.
Ich wäre sehr dankbar wenn mir einer sagen kann wie ich das hinbekomme ich versuche es schon eine ganze weile nur mit FindWindow und EnumChildWindow komme ich irgenwie nicht richtig weiter voran.
Danke
-
kann mir den wirklich keiner helfen ich habe schon bei google, msdn, ...
gesucht aber leider nix gefunden das mir weiterhilft
-
ich weis ja nicht wie das den anderen lesern geht, aber ich habe nicht ganz verstanden wie du dir das vorstellst.
aber ich glaube die einfachste sache für dich währe die verwendung eines automatisierungstools (girder,boxwech etc.) das auf ein fenster 'verbindung unterbrochen' mit den notwendigen maus/tastureingaben reagiert
-
Hi, also so einen Dialog gibt es bei diesem tollen Modem nicht (ist ein virtuelles und eigentlich ein NokiaCardfone).
Und jetzt versuche ich ganz einfach zu sagen wass ich will:
Ich möchte die Einträge eines TreeView in einer Fremden *.EXE, die sich in einem Fenster befindet. Das Handle des Fensters habe ich jedoch nicht das des TreeView. (z.B. Die Liste der Downloads von FileSharing programmen)
Dann möchte ich einen Eintag selektieren.
Und dann Einen Button in einer Toolbar dieser Aplication drücken (zb. Zurück bei Internet Explorer)
Danke
-
das handle gibt es relativ einfach wenn du nach einem fenster mit 'SysTreeView32' class suchst
(elegant mit enumchildwindows tw. geht auch findwindowex)aber wie es dann weitergeht kann ich dir auch nicht schreiben
hast du denn dein problemfenster mal mit einem spionageprogramm untersucht ?
(ich weis leider nicht mehr welches hier im forum empfohlen wird, benutze selbst 'sinfo')aber generell würd ich mir nochmal überlegen ob es nicht einfacher ist ereignisse -tastatur/maus- zu simulieren
-
Hi, ja ich habe es mit Spy++ versucht aber leider nur rausbekommen das es sich um ein SysTreeView32 handelt.
Das mit der Tastertursimulation habe ich mir auch schon überlegt aber leider ist da das Problem das das Programm auch ein Bekannter haben möchte (erarbeitet mit den CardPhones und hat das gleiche Problem), der leider 3 Rechner hat die dieses Modem Benutzen und leider alle eine andere Configkuration haben daher ist es etwas mist für jeden Rechner ein nues Programm zu schreiben.
Mit FindWindowEx hats leider aus irgentweinem grund nicht geklappt ich habe das Parentfenster (Gerätemanager) eingegeben und nach SysTreeView32 suchen lassen ich habe nie ein Handle bekommen.
Mit EnumChildWindows komme ich irgentwei nicht richtig zu rande dort muss ich eine Callback angeben. Ich habe in der Doku nachgesehen aber irgentwie nicht richtig den Sinn verstanden könntest du mal grob ein beispiel posten wie man die Funktion benutzt?
Ich wäre dir sehr dankbar.
-
Nobody schrieb:
Mit FindWindowEx hats leider aus irgentweinem grund nicht geklappt ich habe das Parentfenster (Gerätemanager) eingegeben und nach SysTreeView32 suchen lassen ich habe nie ein Handle bekommen.
Evtl. ist es ja kein direktes Child - du siehst in Spy++ aber du die Fenster in einer Baumstruktur. Dort solltest du es sehen
-
soweit ich gesehen habe war der TreeView tiefer im Baum unter dem Handle des Fenster aber warum bekomme klappt das denn nicht?
Danke
-
Das klappt dann trotzdem, allerdings musst du dann eben öfter FindWindowEx aufrufen
-
Sorry wegen meiner Blöden fragerrei und danke dass du mir hilfst.
Ich habe jetzt folgenden Code:
HWND hWndGM = FindWindow(NULL, "Geräte-Manager"); if (hWndGM == NULL) { g_iReboot = 9; bError = true; return 0; } HWND hWnd = FindWindowEx(hWndGM, NULL, "SysTreeView32", NULL); if (hWnd == NULL) { g_iReboot = 9; bError = true; return 0; }
Leider ist hWnd immer NULL und wie meist du das öfters aufrufen es gibt doch nur ein SysTreeView32.
Danke
-
Ich meine mal im Richter gelesen zu haben, das Du zwar einfach an die Daten (Einträge) von fremden "standard"-Controls kommst, aber nicht an CommonControls (ListView, TreeView usw.) fremder Prozesse...
An die standard kommst Du weil sie aufgrund der Abwärtskompatibilität zu 16-bit Windows nicht geschützt werden, die CommonControls aber sind 32bit und dementsprechend im geschützten Prozessmemory...
Kann mich aber auch irren...
-
Also zumindest bei mir (Win2000) ist das SysTreeView32 kein direktes Child des Geräte-Manager-Fensters. Du musst dich also, um an das SysTreeView32 zu kommen, quasi mit FindWindowEx immer eine Ebene Tiefe hangeln, bis du dort angekommen bist - falls du verstehst, was ich damit meine
-
Achso geht ein FindWoindowEx nicht den ganzen Baum durch sondern nur die Direkten Child? Also muss ich den Kompletten baum vonm Gerätemanager bis runter zum TreeView Durchgehen?
Ich probiere es direkt aus danke!
-
Nobody schrieb:
Achso geht ein FindWoindowEx nicht den ganzen Baum durch sondern nur die Direkten Child? Also muss ich den Kompletten baum vonm Gerätemanager bis runter zum TreeView Durchgehen?
Genau so ist es
-
geht
VIELEN VIELEN DANK!!!