Ist schon pracktisch solch ein Thema zu finden, welches gleich in doppelter Hinsicht passt
eigentlich wollte ich ja erst sowas sagen,
Delphi-Quellcode:
Ich würde mal versuchen rauszubekommen, wie das z.B. Notepad macht, denn der hat auch seine eigene Beschriftung und ohne das es flackert.
Bei meinem Notepad steht [b]Dateiname[/b] und [b]Dateityp[/b], aber in den originalen Open-/Save-Dialogen steht bei mir [b]Objektname[/b] und [b]Objekttyp[/b] (im SaveDialog allerdings [b]Dateityp[/b] :gruebel: )
aber inzwischen hat sich hier einiges geändert, bei mir funktionier das mit dem Übersetzen auch ganz gut und ich benötige dafür nur eine Zeile ^^
SendMessageW(GetDlgItem(hWnd, 1), WM_SETTEXT, 0, Integer(PChar('abc123')));
Im Brunde bräuchtet ihr euch nur in den ExplorerHook des Dialogs einschalten, bei Msg = WM_NOTIFY und POFNotifyExW(LParam)^.hdr.code = CDN_INITDONE.
Oder, wenn's reicht ins onShow-Ereignis (wird über's ExplorerHook aufgerufen).
Ich persönlich hab hier meinen eigenen ExplorerHook, daher isses wohl etwas einfacher
Zu dem
Handle-Problem:
Dat hab'sch aus'm
MSDN - das über GetOpenFileName/GetSaveFileName-Fenster enthält seit Win2K/NT vermutlich sowas wie ein Explorer-Fenster, welches wohl jetzt die WindowsMessages an den ExplorerHook versendet, muß also erst das
Handle auf das Dialog-Fenster geholt werden.
Zitat von
MSDN:
[in]
Handle to the child dialog box of the Open or Save As dialog box. Use the GetParent function to get the
handle to the Open or Save As dialog box.
Luckie hat das inzwischen auch schon "irgendwie" mitbekommen und holt sich jetzt per
hWnd := GetParent(hWnd);
das richtige Fenster, mit den gesuchten Controls, herran.
Ach ja, hab auch etwas gebraucht und diese Fenster bisher entziffert.
(bis auf 0 und 1088 ... keine Ahnug was das ist)
Code:
#32770 DialogName
0 ?
1 Öffnen-Button
2 Abbrechen-Button
1038 Hilfe-Button
1040 Schreibgeschützt-CheckBox
1088 ?
1089 Typ-Label
1090 Dateiname-Label
1091 SuchenIn-Label
1120 Datei-ListBox
1136 Typ-Edit
1137 SuchenIn-ComboBox
1148 Dateiname-Edit
1184 PlacesBar
Und Luckie ... WinSight hilft irgendwie auch nicht viel weiter
bei mir hat das nur die beiden SuchenIn-Controls entdeckt
(hab dann einfach mal in 'ner Schleife eines per GetDlgItem testen lassen)