VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請問如何使程式無法重覆執行

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
lcm



註冊時間: 2004-12-27
文章: 45


第 1 樓

發表發表於: 星期日 九月 11, 2005 3:00 pm    文章主題: 請問如何使程式無法重覆執行 引言回覆

請問各位大大,
  要如何判斷程式已在執行不可重覆執行該程式,謝謝。
回頂端
檢視會員個人資料 發送私人訊息
lcm



註冊時間: 2004-12-27
文章: 45


第 2 樓

發表發表於: 星期日 九月 11, 2005 3:17 pm    文章主題: 引言回覆

我已在http://fox.hanyu.com.tw/View.aspx?fbId=1&Id=10092中找到了,謝謝。
回復:如何避免vfp做的應用程式的重覆執行呢?
*****************************
* 防止重複運行
*****************************
PROCEDURE ReEntry
PARAMETERS lcTitle
DECLARE integer FindWindow IN win32api string,string
IF FindWindow(0,lcTitle)<>0
CLEAR DLLS
RETURN .t.
ELSE
CLEAR dlls
RETURN .f.
ENDIF

=>檢查title
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2160


第 3 樓

發表發表於: 星期一 九月 12, 2005 12:53 pm    文章主題: 引言回覆

搜尋: 重複執行
http://vfp.sunyear.com.tw/viewtopic.php?t=95&highlight=%AD%AB%BD%C6%B0%F5%A6%E6

附註: 中文字博大精深, 參閱: http://www.evanlin.com/blog/archives/000107.html

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
popolon



註冊時間: 2003-09-20
文章: 9


第 4 樓

發表發表於: 星期六 十月 01, 2005 7:48 pm    文章主題: 引言回覆

**取得登入CLIENT端電腦之使用者名稱
IF ALLTRIM(SUBSTR(SYS(0),RAT("#",SYS(0))+2)) > "1" AND !EMPTY(ALLTRIM(SUBSTR(SYS(0),RAT("#",SYS(0))+2)))
GcUserName = ALLTRIM(SUBSTR(SYS(0),RAT("#",SYS(0))+2))
ELSE
=Messagebox('主機系統錯誤,請重新登入或重新開機!',0+48,'錯誤訊息')
ENDIF
****
上述程式可取得登入CLIENT端電腦之使用者名稱(登入window的使用者)
再將此使用者名稱記錄在任一處(資料表,登入檔...都可以)
當程式執行時查看紀錄是否存在
若存在則出現訊息視窗
切記
系統結束時記得要把該紀錄清除喔
回頂端
檢視會員個人資料 發送私人訊息
KKKLYNN



註冊時間: 2004-09-17
文章: 357


第 5 樓

發表發表於: 星期三 十一月 21, 2007 3:28 pm    文章主題: 引言回覆

若是使用FINDWINDOW
但CAPTION是動態(字元是不固定,會加入TIMER)
又想在未啟動資料表之前處理
不知如何處理?
可用
http://fox.hanyu.com.tw/View.aspx?fbId=1&Id=31963
來解決
但是否能用於win98,就不可知
或許各位可告知,現在我無法測試win98(沒這環境)
以上謝謝
回頂端
檢視會員個人資料 發送私人訊息
sheuok



註冊時間: 2004-11-20
文章: 63
來自: Taiwan

第 6 樓

發表發表於: 星期日 十二月 02, 2007 12:05 pm    文章主題: 引言回覆

程式寫法如下:

if uf_已執行("執行檔檔名")>1
Messagebox("程式已經執行!”)
Quit
Endif

****
Function uf_已執行(ulp_執行檔名)
Private All Like m_*
Declare Integer CreateToolhelp32Snapshot In kernel32 Integer dwFlags, Integer th32ProcessID
Declare Integer Process32First In kernel32 Integer hsnapshot, String @ Processentry32
Declare Integer Process32Next In kernel32 Integer hsnapshot, String @ Processentry32
Declare Integer CloseHandle In Kernel32.Dll Integer
ulp_執行檔名=Upper(Juststem(Iif(Empty(ulp_執行檔名),Program(0),ulp_執行檔名)))
m_hsnap=createtoolhelp32snapshot(2,0) &&取得 m_hsnap
m_proc=num2dword(296)+Repl(Chr(0),292)
m_first=process32first(m_hsnap,@m_proc)
m_open=0
Do While m_first#0
m_file=Substr(m_proc,37,260)
m_file=Upper(Juststem(Left(m_file, At(Chr(0),m_file)-1))) &&取得執行檔名稱(不含附加名)
m_open=m_open+Iif(Alltrim(m_file)==Alltrim(ulp_執行檔名),1,0)
m_first=process32next(m_hsnap,@m_proc)
Enddo
closehandle(m_hsnap)
Return m_open
Endfunc
Function num2dword(lp_值)
Private All Like m_*
m_b3=Int(lp_值/256^3)
m_b2=Int((lp_值 - m_b3*256^3)/256^2)
m_b1=Int((lp_值 - m_b3*256^3 - m_b2*256^2)/256)
m_b0=Mod(lp_值, 256)
Return Chr(m_b0)+Chr(m_b1)+Chr(m_b2)+Chr(m_b3)
Endfunc
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作