Конференция "FreePascal" » Импортирование функции
 
  • TUser © (12.01.05 11:41) [0]
    Вопрос возник после ветки
    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';

    { TForm1 }

    procedure TForm1.Button1Click(Sender: TObject);
    var h: hWND;
       p: PAnsiChar;
       i: integer;
       k: integer;
    begin
     h:={handle of interest};
     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
  • PVOzerski © (12.01.05 11:54) [1]
    stdcall забыл? В нынешнем FPC 1.9.x передача параметров идет уже по соглашениям register. А вот в 1.0.x, пожалуй, прокатило бы и так.
  • TUser © (12.01.05 12:53) [2]
    Точно. Спасибо.
 
Конференция "FreePascal" » Импортирование функции
Есть новые Нет новых   [134430   +2][b:0][p:0.001]