掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DLLの解放を実行させるには??? (ID:13823)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ああ、やっぱソース必要ですかね、、 そもそもこういうソースにムリがあるのかもしれないし、、、(スミマセン、DLLってどう値を渡してやればいいのかよく分からないもので、、、) -----DLLのソース----- function Load_ICONImage(const FileName: PChar; p: Pointer):boolean; var ico : TICON; begin ico := TIcon.Create; try ico.LoadFromFile(FileName); TBitmap(p).Width := GetSystemMetrics(SM_CXICON); TBitmap(p).Height := GetSystemMetrics(SM_CYICON); DrawIconEx(TBitmap(p).Canvas.Handle,0,0,ico.Handle,0,0,0,0,3); result := true; finally ico.Free; end; end; //こんなようなのを、他にPNGとJpegとGifでやってます。 exports Load_ICONImage, Load_JPEGImage, Load_BITMAPImage, Load_PNGImage, Load_GIFImage; begin end. で、実行ファイル側で procedure TMain.OpenPictureFile(FileName : string); type TLoad_JPEGImage = function(const FileName: PChar; p: Pointer):boolean; TLoad_PNGImage = function(const FileName: PChar; p: Pointer):boolean; TLoad_GIFImage = function(const FileName: PChar; p: Pointer):boolean; TLoad_ICONImage = function(const FileName: PChar; p: Pointer):boolean; var hLoadLib: THandle; Load_JPEGImage: TLoad_JPEGImage; Load_PNGImage : TLoad_PNGImage; Load_GIFImage : TLoad_GIFImage; Load_ICONImage: TLoad_ICONImage; ext : string ; bmp : TBitmap; begin ext := AnsiUpperCase(ExtractFileExt(FileName)); hLoadLib := LoadLibrary('LoadPicture.dll'); if hLoadLib = 0 then begin MessageBox(Handle,'DLLがない〜','Error',MB_OK or MB_ICONERROR); Exit; end; bmp := TBitmap.Create; try if ext = '.BMP' then begin bmp.LoadFromFile(FileName); end; if (ext = '.JPG') or (ext = '.JPEG') then begin @Load_JPEGImage := GetProcAddress(hLoadLib,'Load_JPEGImage'); //関数をインポート if @Load_JPEGImage <> nil then //関数があれば begin Load_JPEGImage(PChar(FileName),Pointer(bmp)); end; end; if ext = '.PNG' then begin @Load_PNGImage := GetProcAddress(hLoadLib,'Load_PNGImage'); if @Load_PNGImage <> nil then begin Load_PNGImage(PChar(FileName),Pointer(bmp)); end; end; if ext = '.GIF' then begin @Load_GIFImage := GetProcAddress(hLoadLib,'Load_GIFImage'); if @Load_GIFImage <> nil then begin Load_GIFImage(PChar(FileName),Pointer(bmp)); end; end; if ext = '.ICO' then begin @Load_ICONImage := GetProcAddress(hLoadLib,'Load_ICONImage'); if @Load_ICONImage <> nil then begin Load_ICONImage(PChar(FileName),Pointer(bmp)); end; end; Image1.Picture.Assign(bmp); finally bmp.Free; FreeLibrary(hLoadLib); ShowMessage('Freeされた?'); end; end; な感じにすると、bmpに画像がかかれて返ってくるかな〜とか思ってやってみたわけです。で、実行すると、finally節最後のShowMessage()は表示される前に固まってしまうんです。 ちなみに、try〜finallyは、私はCreateメソッドを使うときは必ず入れてます。で、止まってます。 どうか宜しくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.