線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:896
推到 Plurk!
推到 Facebook!

請教無from的.dll檔是否只能在背景執行如showmessage無法作用嗎?

尚未結案
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-18 19:55:42 IP:202.145.xxx.xxx 未訂閱
小弟想請問無from的.dll檔若是在.dll檔function中寫上如要show from 的指令如showmessage('hi');通常會delay很久且show不出message來 是否無form的.dll檔無法用一些delphi中的方法,那大概.dll檔能容忍那一類型的方法或元件create或執行? 堅持從洗馬桶做起 Eric 發表人 - huangeider 於 2004/04/19 00:12:40
geniustom
版主


發表:100
回覆:303
積分:260
註冊:2003-01-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-19 03:08:42 IP:61.67.xxx.xxx 未訂閱
huangeider您好.. showmessage這個函數..必須引用於DAILOGS..也會間接USES FORMS.. 如果您的DLL沒有FORM..那您使用SHOWMESSAGE這個函數..很浪費DLL空間 還有效能的..因為只要一USES FORMS..您的DLL至少就暴增至350KB.. 所以建議您使用MESSAGEBOX..他只需要uses windows這個unit就夠了.. 原型如下..
int MessageBox(        HWND hWnd,        // handle of owner window
    LPCTSTR lpText,        // address of text in message box
    LPCTSTR lpCaption,        // address of title of message box  
    UINT uType         // style of message box
   );
詳細用法請看HELP的WINDOWS SDK 查詢MessageBox 即可.. 相信效能會提升很多的..GOOD LUCK
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-23 21:38:03 IP:202.145.xxx.xxx 未訂閱
int MessageBox(        HWND hWnd,        // handle of owner window
    LPCTSTR lpText,        // address of text in message box
    LPCTSTR lpCaption,        // address of title of message box  
    UINT uType         // style of message box
   );
能告知這四個參數的值嗎? help內全是寫flag的值 而且沒有sample 堅持從洗馬桶做起 Eric
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-23 22:13:37 IP:218.170.xxx.xxx 未訂閱
MessageBox( 0, 'Hi world' , 'ok' , MB_OK ) ; MessageBox( 0, 'Hi world' , 'ok' , MB_OKCANCEL ) ; MessageBox( 0, 'Hi world' , 'ok' , MB_YESNO ) ; 試試看就知道....
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-24 18:42:45 IP:202.145.xxx.xxx 未訂閱
請教dll檔是否無法show出以下的message library Project1; uses ShareMem, windows, SysUtils, Classes; {$R *.res} function test:boolean; stdcall; begin result := False; MessageBox( 100, 'Hi world' , 'ok' , MB_YESNO ) ; result := True; end; exports test; end. //把dll存在c:\test\project1.dll --執行sql --可通過但沒show 出MessageBox( 100, 'Hi world' , 'ok' , MB_YESNO ) ; execute sp_dropextendedproc 'test' go execute sp_addextendedproc 'test', 'c:\test\Project1.dll' go begin declare @c int execute @c=_test select @c end go 堅持從洗馬桶做起 Eric
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-24 21:19:00 IP:218.170.xxx.xxx 未訂閱
把 100 改成 0 試試看
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-27 01:00:48 IP:202.145.xxx.xxx 未訂閱
不知為何改成0或100,sql都一直在run,停在當下 堅持從洗馬桶做起 Eric
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-27 01:39:29 IP:218.170.xxx.xxx 未訂閱
看來我弄錯你的問題了, 感覺上你應該 1. Messagebox 的第一個參數你應該要傳 0 是沒有錯 2. 你的 DLL 是要拿去給 SQL 呼叫的 . 所以你應要寫一個符合 Open Data Services 格式的 DLL , 而不是一般的 DLL 3. 請參考 SQL Server Book on line 中有關於 "Creating Extended Stored Procedures" 的說明
系統時間:2024-06-26 12:54:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!