Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   WinAPI в Delphi (https://forum.antichat.xyz/showthread.php?t=180145)

DiffiT 19.02.2010 16:53

WinAPI в Delphi
 
В общем, не догоняю, как объявить API-функцию.

Из гугла/яндекса толкового почти ничего не выжал. только примерно вот это (и то не работает)
Код:

function GetWindowDC(Wnd: HWnd): hDC;
stdcall; extenal 'user32.dll' name 'GetWindowDC';

Всяко экспериментировал, но нирвзу не заработало. Честно говоря, я ваще толком не знаю, куда это писать... Объясните дураку...

И ещё пытался с реестром бодаться (Там функции в 'Windows' объявлены). Тоже не вышло ничего, хотя в ВБ те же функции спокойно юзаю...

sn0w 19.02.2010 17:13

пока на нее не подсел переходи на цпп)

DiffiT 19.02.2010 17:15

Цитата:

Сообщение от sn0w
пока на нее не подсел переходи на цпп)

не подсяду) просто всё по порядку :)

0rs 19.02.2010 17:43

uses Windows
Эта функция там описана

DiffiT 19.02.2010 17:45

Цитата:

Сообщение от 0rs
uses Windows
Эта функция там описана

Мне не конкретно эту функцию надо.

DiffiT 19.02.2010 17:47

Млин, вся опа в том, что вопрос простейший, а ответа нет. Просто дельфин не родной для мну язык, вот и парюсь :)

0rs 19.02.2010 17:53

Вроде в первом посту функция выглядит правильно. Может только в одну строку ее записать. А что конкретно не работает?

transserg 19.02.2010 17:54

DiffiT
Код:

unit ....;
  uses
      windows;
.......
function GetWindowDC(Wnd: HWnd): hDC;
stdcall; extenal 'user32.dll' name 'GetWindowDC';

  function GetModuleFileNameEx(hProcess: THandle; hModule: HINST;
    lpFilename: PChar; nSize: DWORD): DWORD; stdcall; external 'psapi.dll'
    name 'GetModuleFileNameExA';
   
  function EnumProcessModules(hProcess: THandle; lphModule: LPDWORD; cb: DWORD;
                              Var lpcbNeeded: DWORD): BOOL Stdcall; external 'psapi.dll'
    name 'EnumProcessModules';


implementation
....
end.

в модуле должно выглядеть примерно так
если ты объявляешь функцию так же как она в библиотеке названа то имя
Код:

name 'GetModuleFileNameExA';
можно не писать..

DiffiT 19.02.2010 18:11

Цитата:

Сообщение от transserg
DiffiT
Код:

unit ....;
  uses
      windows;
.......
function GetWindowDC(Wnd: HWnd): hDC;
stdcall; extenal 'user32.dll' name 'GetWindowDC';

  function GetModuleFileNameEx(hProcess: THandle; hModule: HINST;
    lpFilename: PChar; nSize: DWORD): DWORD; stdcall; external 'psapi.dll'
    name 'GetModuleFileNameExA';
   
  function EnumProcessModules(hProcess: THandle; lphModule: LPDWORD; cb: DWORD;
                              Var lpcbNeeded: DWORD): BOOL Stdcall; external 'psapi.dll'
    name 'EnumProcessModules';


implementation
....
end.

в модуле должно выглядеть примерно так
если ты объявляешь функцию так же как она в библиотеке названа то имя
Код:

name 'GetModuleFileNameExA';
можно не писать..

вроде, так и делаю.. =) щас ещё раз попробую :)

DiffiT 19.02.2010 18:17

;) спасибо, заработало)))) не туда писал, как оказалось)))) Пробовал писать в type, как функцию формы, пробовал в public и в private :) щас вкурил, зачем там end был))))


Время: 12:38