Вопрос возник после ветки
http://pda.delphimaster.net/?id=1105388433&n=0Я там написал код, который первоначально я отлаживал в Лазарусе. Но, поскольку, на FP функция GetWindowModuleFileName не проэкспортирована, то я прописал ее сам. Вот, что из этого получилось
implementation
uses Windows;
function GetWindowModuleFileName (Handle: hWND; Buff: PAnsiChar; Size: Cardinal):Cardinal;
external user32 name 'GetWindowModuleFileNameA';
procedure TForm1.Button1Click(Sender: TObject);
var h: hWND;
p: PAnsiChar;
i: integer;
k: integer;
begin
h:=;
writeln('handle is '+inttostr(h));
if h <> 0 then begin
k:=32;
repeat
k:=k*2;
GetMem(p,k);
try
i:=GetWindowModuleFileName(h,p,k);
writeln('i = '+inttostr(i));
if i < k then begin
writeln('length = '+inttostr(i));
Label2.Caption:=copy(p,1,i);
writeln(' name is '+Label2.Caption);
end;
finally
FreeMem(p);
end;
until i < k;
end;
writeln('');
end;
В Delphi все работает, а здесь - нет. В подчеркнутой строке копируется ноль символов. Наверное я не правильно проэкспортировал функцию из библиотеки. Но, если переписать так, как написано в Delphi'ском Windows.pas (там не прописаны параметры) - то компилятор FP это не принимает.
Как правильно проэкспортировать эту ф-цию?PS. Если надо - ее описание есть вот здесь
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/wind owreference/windowfunctions/getwindowmodulefilename.asp