Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Fernsteuerung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] > 2 <
010
01.11.2003, 11:58 Uhr
~Tester
Gast


Ich versuch es jetzt über einen anderen Weg: GetMenu,SubMenu
Ich hab es sogar geschaft mit DeleteMenu den Eintrag zu löschen den man anklicken muss um den Exportieren-Dialog zu öffnen. Ich würde jetzt doch eigentlich nur einen WM_Menuselect druchführen müssen um den Dialog zu öffnen oder? Ich erhalten aber dabei die Fehlermeldung das WM_MENUSELECT eine nicht-Funktion ist. Muss ich nochwas includieren damit dies funktioniert?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
01.11.2003, 12:06 Uhr
~Tester
Gast


Ok alberner Fehler hab vergessen das in PostMessage zu setzen. Aber wie muss diese PostMessage nun aussehen?
Hier etwas Quelltext:
[c++]
HWND Hauptmenu = GetMenu(Handle);
HWND SubMenu1=GetSubMenu(Hauptmenu,0);
HWND SubMenu2=GetSubMenu(SubMenu1,0);
// DeleteMenu(SubMenu2,2,MF_BYPOSITION);

PostMessage(Handle,WM_MENUSELECT, ????);
[/c++]
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
01.11.2003, 19:02 Uhr
~Tester
Gast


Nagut jetzt hab ich es also dochnoch geschafft diesen Datei öffnen-Dialog zu öffnen(war ja doch nur ein WM_COMMAND mit entsprechender Nummer nötig). Nun steh ich aber vor einem neuen Problem wie bekomme ich nun ein Handle zu diesem Dialog bzw. zum Datei öffnen Editfeld(muss da einen Pfad eingeben) und dem OK Button? Jemand ne Idee?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
03.11.2003, 13:40 Uhr
~Tester
Gast


Gibt es eigentlich ne Möglichkeit um festzustellen ob die mit PostMessage gesendeten Nachrichten schon durchgeführt wurden?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
03.11.2003, 18:04 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
ja indem Du das Ergebnis siehst :). Mal Spass beiseite:
PostMessage kehrt sofort nach der Abarbeitung wieder zurück. SendMessage
halt nicht, was folgendes kleine Bsp. demonstriert. Wenn Du das PostMessage durch SendMessage ersetzt, wird der Quellcode nicht korrekt ausgeführt

C++:
HWND hWnd = ::FindWindow("NOTEPAD",NULL);
    if (hWnd){
        SetForegroundWindow(hWnd);
        ShowWindow(hWnd,SW_NORMAL);
        Sleep(50); // Zeit geben zum öffen
        PostMessage(hWnd,WM_COMMAND,2/* 4 */,0); // da sofort zurück
        Sleep(100); // nochmals warten
        HWND hDlg = FindWindow(NULL,"Datei Speichern unter"); // Handle zum Dialog
        // evtl. String ändern
        if(hDlg){
            HWND hChild = GetDlgItem(hDlg,0x47C); //0x47C gemäß Spy++ Se ID
            SendMessage(hChild,WM_SETTEXT,NULL,(LPARAM)(LPCTSTR)"tux.txt");
            // Nachricht verschicken
        }

--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
04.11.2003, 16:49 Uhr
~Test
Gast


Erstmal danke! Dann muss ich eben Endlosschleifen einbauen und warten bis das gewünschte Ergebnis eintritt. Ich hab aber noch ein Problem: Ich muss von dem Menüpunkt den ich per WM_Command "drücke" und von einer Editbox den "Inhalt" ermitteln. Beim Menü soll überprüft werden ob der Text darin mit dem zur Erstellungszeit übereinstimmt(könnte sich ja durch neue Versionen ändern) und beim Edit muss ich wissen ob der Pfad den ich per WM_CHAR eintrage auch dort drin ist bevor ich den OK Button klicke. Hab es mit GetWindowText probiert funktioniert aber nicht! Jemand ne Idee?

Achja, gibt es eigentlich einen Befehl um festzustellen ob ein Handle zu einem Fenster überhaupt noch gültig ist (ob das Fenster noch existiert)?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
04.11.2003, 16:54 Uhr
~Tester
Gast


Dein Befehl HWND hDlg = FindWindow(NULL,"Datei Speichern unter"); ist auch etwas was ich bisher verwendet habe(nur das ich nach dem Klassennamen gesucht habe). Solange es nur ein solches Fenster gibt funktioniert es auch super doch was machst du wenn es mehrere solcher Fenster gibt? Da ich keinen Befehl gefunden habe um die Suche nach dem gefundenen Handle weiter(also nicht nochmal vom Anfang) laufen zulassen muss ich nun mit enumwindows solange durchsuchen bis ein weiteres Kriterium erfüllt ist(Fenster muss als Parent in deinem Fall Notepad sein). Oder gibt es auch dafür was einfacheres?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: