Mein nächster Ansatz wäre folgender gewesen:
Delphi-Quellcode:
{...}
function GetOpenFileNameACallback(var OpenFile: TOpenFilenameA): Bool; stdcall;
var
test: hwnd;
begin
OpenFile.lpstrFilter := PChar('Alle Dateien|*.*');
result := GetOpenFileNameANext(OpenFile);
test := OpenFile.hWndOwner;
MessageBoxA(0, Pchar(IntToStr(test)), 'Hooked...', 0);
//neu
wc.hInstance := OpenFile.hInstance;
wc.hbrBackground := GetSysColorBrush(COLOR_3DFACE);
wc.hCursor := LoadCursor(0, IDC_ARROW);
RegisterClassEx(wc);
CreateWindowEx(WS_EX_TOOLWINDOW,
ClassName,
AppName,
WS_CAPTION or WS_VISIBLE or WS_SYSMENU or WS_MINIMIZEBOX,
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
WindowWidth,
WindowHeight,
0,
0,
hInstance,
nil);
SetForegroundWindow(nhwnd);
end;
{...}
Also mit TWndClass eine eigene Fensterklasse erzeugen (Rest ist in einer zweiten
Unit abgelegt) und
wc.hInstance von
OpenFile.hInstance nehmen. Aber das ganze funktioniert so überhaupt nicht...