『壹』 linux下檢查程序是否正常
tomcat出蘆物現漏洞?你說的是你的tomcat還是tomcat下部署的陪坦液程序?tomcat出問題的話你自己去官網下一個不就好了。程序出問題的話看錯誤日信明志
『貳』 (VB)如何檢查自身程序已經運行
Private Sub Form_Load()
If App.PrevInstance Then
End
End If
End Sub
用DDE實現窗體防止運行多個實例並傳遞命令
上網的朋友一定都用過網路螞蟻(Net Ants)的吧?不知你在使用過程中有沒有注意過,那就是如果你想調動兩個「螞蟻」為您效力是不可能的——它總會把新運行的關閉。這點在VB中很容易實現:
Private Sub Form_Load()
If App.PrevInstance Then
MsgBox "你已經運行這個應用程序了"
End ' 退出新運行的程序
End If
End Sub
這樣如果你運行這個程序後在運行它,它會彈出一個消息框並拒絕再次運行。這非常容易。 而「螞蟻」程序的妙處就在於:在重復運行「螞蟻」時它不僅拒絕運行,而且能把已經運行的「螞蟻」激活,這樣用上面的程序就無能為力了。但事實上實現拒絕運行並激活已運行的
程序有多種方法:
1、用FindWindow函數得到已經運行窗體的句柄(HWND),然後用SetActiveWindow等API函數將其激活。其缺點也很明顯,那就是沒法傳遞參數。
2、用FindWindow函數得到已運行窗體的句柄後用SendMessage的方法給窗體傳送一個自定義消息(附帶參數),然後在窗體中攔截並進行處理,但這樣做要修改窗體的標准消息處理程序,用在VC,BC或DELPHI編寫的程序中還行,但在VB中工作量太大,並且容易發生「一般保護行錯誤」使VB崩潰,不太可取(當然,如果你有足夠的信心和不怕崩潰的精神,也可以試一下 ^_^ )。
3、使用DDE技術。
所謂DDE技術,就是動態數據交換技術。也許你很奇怪,這與本文所討論的內容有什麼相乾的?
且聽我慢慢講來。
為了實現拒絕運行並把已經運行的程序激活纖冊並實現各種功能,我們可以先用本文開頭提到的方法,檢測一下程序有沒有被運行過,如果沒有,就正常運行,如果已經被運行過,就打通與它的DDE通道,傳給它一個(或一些)數據,然後由已經運行的程序對數據進行處理,再去實現各種「意想不到」的功能,這時也許就有人對這你的程序喊:「酷、酷……」 ^_^
好了,耳聽為虛,眼見為實,下面讓我們動點真格的。
打開VB,新建一個工程,選擇菜單中的「工程->工程1 屬性」,把工程名稱改為「P1」(我愛偷鏈蠢懶,能短則短 ^_^ ),把已有的一個窗體的「LinkTopic」屬性改為「FormDDE」,把「LinkMode」屬性改為「1 - Source」,添加一個PictureBox控制項作為DDE執行控制項,命名為picDDE。然後添加一個TextBox控制項,命名為「txtInfo」,並把「MultiLine」屬性設置為「True」,以便顯示多行文本,作為消息顯示控制項。
最後在窗體代碼區輸入以下代碼:
Const COMMANDLINE = "CommandLine=" ' 還是為了省事,定義一個常量
Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
Static lngCount As Long
Dim Info As String
Info = txtInfo.Text ' 保留原有信息
Select Case CmdStr ' CmdStr 是DDE程序傳送過來的參數
Case "Max"
Me.WindowState = 2
Info = Info + vbNewLine + "窗體已被最大化"
Case "ShowTime"
Info = Info + vbNewLine + "最後一次運行這個程序的時間是:" + Str(Now)
Case "Count"
lngCount = lngCount + 1
Info = Info + vbNewLine + "你已經第" + Str(lngCount) + "次重復調用這個程序。"毀喚宏 _
+ vbNewLine + "但怕您不多給工資,所以只運行了一個 ^_^"
End Select
If Left(CmdStr, Len(COMMANDLINE)) = COMMANDLINE Then
Info = Info + vbNewLine + "新程序曾以命令行形式運行" + vbNewLine + "命令行為:" _
+ vbNewLine + Right(CmdStr, Len(CmdStr) - Len(COMMANDLINE))
End If
txtInfo.Text = Info ' 把信息顯示出來
Cancel = False
End Sub
Private Sub LinkAndSendMessage(ByVal Msg As String)
Dim t As Long
picDDE.LinkMode = 0 '--
picDDE.LinkTopic = "P1|FormDDE" ' |______連接DDE程序並發送數據/參數
picDDE.LinkMode = 2 ' | 「|」為管道符,是「退格鍵」旁邊的豎線,
picDDE.LinkExecute Msg '-- 不是字母或數字!
t = picDDE.LinkTimeout '--
picDDE.LinkTimeout = 1 ' |______終止DDE通道。當然,也可以用別的方法
picDDE.LinkMode = 0 ' | 這里用的是超時強制終止的方法
picDDE.LinkTimeout = t '--
End Sub
Private Sub Form_Load()
If App.PrevInstance Then ' 程序是否已經運行
Me.LinkTopic = "" ' 這兩行用於清除新運行的程序的DDE伺服器屬性,
Me.LinkMode = 0 ' 否則在連接DDE程序時會出亂子的
LinkAndSendMessage "Max" '--
LinkAndSendMessage "Count" ' |-----連接DDE接受程序並傳送數據/參數
LinkAndSendMessage "ShowTime" '--
If Command <> "" Then ' 如果有命令行參數,就傳遞過去
LinkAndSendMessage COMMANDLINE + Command
End If
End ' 結束新程序的運行
End If
End Sub
測試一下:
把工程「P1」編譯成EXE文件(設名稱為 P1.EXE )
1、打開「我的電腦」,找到 P1.EXE 並執行。可以看到程序正常運行了。
2、再運行一次,這次新程序沒有運行成功,而原來運行的程序卻被最大化了,而且文本框中有以下
字元:
窗體已被最大化
你已經第 1次重復調用這個程序。
但怕您不多給工資,所以只運行了一個 ^_^
最後一次運行這個程序的時間是:00-2-6 7:11:01
3、打開 MS-DOS方式 ,用命令行方式再次運行程序,如 「P1 How Are You?」
這時原來運行的程序文本框中又多了幾行字:
窗體已被最大化
你已經第 2次重復調用這個程序。
但怕您不多給工資,所以只運行了一個 ^_^
最後一次運行這個程序的時間是:00-2-6 7:14:32
新程序曾以命令行形式運行
命令行為:
How Are You?
OK,運行完全正確,然後你就可以把它應用的你的程序中了。
『叄』 如何檢查一個指定的程序是否在運行
On Error Resume Next
Dim s, objWMIService, colProcessList, objProcess
Dim mFind As Boolean
s="excel.exe" '要查找的進程名宴搭稱
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name='" & s & "'")
For Each objProcess In colProcessList '查找進程
mFind = True
Next
If mFind Then '州信如果找到冊祥輪
'在此加入代碼
Else '如果找不到
'在此加入代碼
End If
『肆』 cmd如何判斷程序是否運行
cmd是 command的縮寫.即 命令提示符(CMD),是在OS / 2 , Windows CE與Windows NT平台為基礎的操作系統(包括Windows 2000和XP中, Vista中,和Server 2003 )下的「MS-DOS 方式」。中文版Windows XP 中的命令提示符進一步提高了與DOS 下操作命令的兼容性,用戶可以在命令提示符直接毀伏廳輸入中文調用文件。
asklist > a.txt<回車>type a.txt | find /i "%進程名%" && goto b<回車>第一句是將當前進廳晌程保存到文件,第二句是檢測進程是否運行,是否跳轉到B處運行。
tasklist /nh>d:1.txt find /i "QQ.exe" d:1.txt if ERRORLEVEL 1 ("C:softwareTencentqqQQQ.exe" ) else (exit) 意纖隱思是檢測"QQ.EXE"有沒有在進程里,大家都知道QQ打開後進程名是"QQ.EXE"如果有在進程里則執行"EXIT"退出,如果沒有在進程里,說明QQ沒有打開,則運行QQ程序"C:softwareTencentqqQQQ.exe" 第二種寫法 tasklist /nh|find /i "QQ.exe" if ERRORLEVEL 1 ("C:softwareTencentqqQQQ.exe") else (exit)
『伍』 易語言中怎樣檢測某個程序是否正在運行
.版本 2
.支持庫 eAPI
.子程序 _按鈕1_被單擊
.局部變數 進程列表, 進程信息, , "0"
.局部變襪做寬量 計次, 整數型
.局部變數 存在進程, 邏輯型
.局部變數 要判斷的程序名, 文本型
進程列表 = 取系統進程列表 ()
要判斷的程序名 = 「QQ1.exe」 '胡尺 這里的QQ.exe可以改為你想要判斷的程序名
.計次循環首 (取數組成員數 (進程列表), 計次)
.如果 (進告亮程列表 [計次].進程名稱 = 要判斷的程序名)
存在進程 = 真
跳出循環 ()
.否則
存在進程 = 假
.如果結束
.計次循環尾 ()
.判斷開始 (存在進程 = 真)
信息框 (「存在進程: 」 + 要判斷的程序名, 0, )
.默認
信息框 (「不存在進程: 」 + 要判斷的程序名, 0, )
.判斷結束
『陸』 怎樣判定應用程序自身運行在「兼容模式」下
不少朋友在升級到Windows Vista後,卻因所使用的應用程序在Windows Vista中不能正常工作而不得不退回到Windows XP,浪費時間不說,也讓自己只能望Windows Vista眾多誘人的功能與特性而興嘆。 其實,如果您打算升級到Windows Vista的話,除了首先檢查 通過Windows Vista認證的軟體列表 ,查看您所使用的應用程序是不是通過了微軟的「Certified for Windows Vista」或「Works with Windows Vista」認證,或者您的應用程序是不是有新的升級版本以兼容於Windows Vista外,還要清楚一點,即使不兼容於Windows Vista的應用程序,也可以在Windows Vista中正常使用,那便是通過兼容模式(Compatibility Mode)運行。 從技術上講,兼容模式並不是一項新技術,在微軟上一版本的哪肆操作系統Windows XP便已提供了這一功能,以解決早期版本程序無法正常運行的問題。不過,相比較而言,Windows Vista中的程序兼容模式似乎有了不小的改進,用戶可進行更詳細的設置,同時,適應性更強。設置應用程序使用兼容模式運行 如果您的應用程序在Windows vista中運行不正常,可按如下的步驟設置使用兼容模式運行,以可以解決絕大多數的兼容性問題。另外,需要提醒的是,兼容模式不僅針對應用程序本身,也可針對應用軟體的安裝程序,即如果某個軟體在Windows vista中不能正常安裝的話,也可以通過設置兼容模式使之完成安裝。 啟動資源管理器,在應用程序執行文件上單擊滑鼠右鍵,選擇屬性; 轉到「兼容性」標簽頁; 註:如果「兼容性」標簽頁為灰色不可選,往手緩襲往由於您選擇的執行文件並非.exe而是.msi文件(如MS Office安裝文件),對這種情況,您需要找到真正的.exe執行文件,簡單辦法便是通過任務管理器,即啟動該程序,然後按「Ctrl+ Alt + Del」組合鍵打開任務管理器,在進程窗口下找到相應對象後查看右鍵屬性。 勾選「用兼容模式運行這個程序」選項; 在其下的下拉菜單中,您可以選擇要兼容的操作系統版本,包括 Windows 95、 Windows 98/ME、 Windows NT4.0 SP 5、 Windows 2000、 Windows XP SP2 以及 WIndows 2003 SP1,對於大多數情況而言,選擇 Windows XP SP 2 應該就可以了; 您還可以根據應用程序的運行需求選擇顏色、屏幕分辯率甚至禁用桌面元素、禁用桌面縮放等; 至於「請以管理員身份運行該程序」項,最好不要勾選,以帶來不必要的安全隱患。當然,如果未選該項程序仍不能在Windows Vista正常運行,您可在稍後嘗試啟用該項; 下圖即為 Vista天地畢兄 在Windows Vista中運行Microsoft Word 2003時設置兼容模式的示例: 點擊確定。 如此,即大功告成,您會發現原來在Windows Vista中頻發故障的舊版應用程序可以在Windows Vista中正常運行了。