我的目的是,用PB呼叫SQLSERVER的無人置守安裝,等sqlserver安裝完成后,再接著執行啟動資料庫的代碼。但是怎么處理才能使SQLSERVER的無人置守安裝完成后,再執行下面的代碼呢?原來想著用呼叫批處理檔案來運行,但是又不知到用戶計算機的算符,所以沒法寫那個批處理檔案。
uj5u.com熱心網友回復:
樓主,我覺得你這樣做是完全不必要的。如果你的應用必須運行在SQL Server上,你只需要讓用戶自己去裝了之后,在你啟動的時候判斷自己的資料庫連接是否有效就行了,你這樣費大力氣去搞定這個問題有什么意義呢?難不成你要在程式運行時把所有的與環境相關的東西都替用戶做了?uj5u.com熱心網友回復:
1、run(。。。)2、檢查安裝行程是否存在,如存在則已經開始安裝,
3、Yield(),反復檢查安裝行程是否存在,如不存在則結束
uj5u.com熱心網友回復:
但是如何得到行程呢?我用下列方法:ll_l=GetModuleHandleA("SETUPSQL")
messagebox(string(ll_l),"")
得到的訊息值是0
long ll_l
ll_l=GetModuleHandleA("SETUPSQL")
messagebox(string(ll_l),"")
do
Yield()
loop until GetModuleHandleA("SETUPSQL")=0
還是沒用.
uj5u.com熱心網友回復:
但是如何得到行程呢?我用下列方法:run(ls_sqlpath)//ls_sqlpath為sqlserver無人置守安裝命令的路徑
ll_l=GetModuleHandleA( "SETUPSQL ")
messagebox(string(ll_l), " ")
得到的訊息值是0
long ll_l
ll_l=GetModuleHandleA( "SETUPSQL ")
messagebox(string(ll_l), " ")
do
Yield()
loop until GetModuleHandleA( "SETUPSQL ")=0
還是沒用.
uj5u.com熱心網友回復:
急用,請指教uj5u.com熱心網友回復:
在回圈中,判定行程吧.如有安裝的這個行程,就等待,然后再次判定.判斷行程一般比判定視窗準確的多。
可以使用CreateToolhelp32Snapshot,Process32Next等幾個函式判定!
uj5u.com熱心網友回復:
有這幾個函式的例子嗎?或者用法?謝謝。uj5u.com熱心網友回復:
// 檢測行程PROCESSENTRY32 Process
Long ll_ProcSnap,ll_mainid
string ls_proname,ls_main
Integer li_result,li_Return
ll_ProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
// 取得系統行程失敗,則直接回傳
If ll_procSnap <= 0 Then Return 0
Process.dwsize = 1060 // 通常用法
Process32First(ll_ProcSnap,Process)
If Not ab_main Then
Do Until Process32Next(ll_ProcSnap, Process) < 1 // 遍歷所有行程直到回傳值為False
ls_proname = Left(process.szexefile,Len(Process.szexefile) - 4)
If This.of_question( ls_proname,Process.th32processid) <> 0 Then Return 1
Loop
Else
Do Until Process32Next(ll_ProcSnap, Process) < 1 // 遍歷所有行程直到回傳值為False
ls_proname = Left(process.szexefile,Len(Process.szexefile) - 4)
If lower(ls_proname) = "newstart" Then ll_mainid = Process.th32processid
li_result = This.of_question( ls_proname,Process.th32processid,True)
li_Return = li_return + li_result
Loop
uj5u.com熱心網友回復:
接分先!轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/112157.html
標籤:數據庫相關
