> えっ! DelphiってDLLを簡単に作れるんですか? > 知らなかった。(^_^;) > Ver1の時にDLL作ろうとして挫折してから、VC++でずっと作ってました。(笑) > ちゃんとヘルプみないて駄目だなあ。(~ペ) ウーン
めちゃくちゃ簡単ですよ。 DLLを、C++で作るよりも、2倍は確実に楽です。 前に、Delphiで作るサンプルを作って、まだヘルプに入れてなかったので、 簡単なのを書いておきます。 ---------------------------------- library dCapture;
uses Windows, SysUtils, Classes, graphics;
function ScreenWidth: Integer; begin Result := GetSystemMetrics(SM_CXSCREEN); end; function ScreenHeight: Integer; begin Result := GetSystemMetrics(SM_CYSCREEN); end;
//Captiure function CaptureWnd(wnd:HWND; FileName: PChar; w,h: Integer):DWORD; var dc: HDC; bmp: TBitmap; res: BOOL; begin Result := 1; dc := GetDC(Wnd); try try bmp := TBitmap.Create; try bmp.Width := w; bmp.Height := h; res := BitBlt(bmp.Canvas.Handle, 0,0, bmp.Width, bmp.Height, dc, 0,0, SRCCOPY); if res = True then begin bmp.SaveToFile(FileName); end else Result := 0; finally bmp.Free; end; except Result := 0; end; finally ReleaseDC(Wnd, dc); end; end;
//失敗したとき、0を返す function CaptureDesktop(FileName: PChar):DWORD; stdcall; begin Result := CaptureWnd(GetDesktopWindow, FileName, ScreenWidth, ScreenHeight); end; function CaptureActiveWindow(FileName: PChar):DWORD; stdcall; var wnd: HWnd; w,h:Integer; re: TRECT; begin wnd := GetActiveWindow; GetClientRect(wnd, re); w := re.Right - re.Left; h := re.Bottom - re.Top; Result := CaptureWnd(wnd, FileName,w,h); end;
exports CaptureDesktop, CaptureActiveWindow;
begin end. ---------------------------------- デスクトップをキャプチャするDLLなんですけど、 ひまわりに、キャプチャする機能つけたので、お蔵入りになったものです。
作り方は、簡単です。
(1)普通の function の末尾に、stdcall を、つける function xxxxx:DWORD; stdcall;
(2)下の方の、exports に、DLLで公開したい関数名を書く
の、2つだけです。
|