Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не корректная работа программы / 1 сообщений из 1, страница 1 из 1
19.01.2009, 09:30
    #35763937
Kasher
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не корректная работа программы
Посмотрите пожалуйста код, не пойму срабатывает через раз. По идее программа проверяет сначала в процессах не висит ли блокнот и калькулятор, и при условии что не висит то запускает их. Вторую копию запускать не должен. Но иногда бывает так, что в процессах ничего не висит, но программа уже не дает запустить даже первую копию программы. Пишет типа что калькулятор.блокнот уже запущен. Может что то с обнулением, или еще что то не так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
Public q As Integer, w As Integer, strUserName As String, strUserDomain As String
Public xID As Integer ' ID процесса блокнота
Public rID As Integer ' ID процесса калькулятора
Public strComputer
Public objWMIService
Public propValue
Public objItem
Public SWBemlocator
Public UserName
Public Password
Public colItems

Private Sub Command1_Click()
Screen.MousePointer = vbHourglass
List1.Clear
List2.Clear
List3.Clear
On Error Resume Next
strComputer = "."
UserName = ""
Password = ""
objItem.Name = ""
strUserName = ""
strUserDomain = ""

Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer, "root\CIMV2", UserName, Password)
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process", ,  48 )
q =  0 
For Each objItem In colItems
    objItem.GetOwner strUserName, strUserDomain
    List1.AddItem objItem.Name
    List2.AddItem strUserDomain & "\" & strUserName
    List3.AddItem objItem.Name & "  " & strUserDomain & "\" & strUserName
q = q +  1 
Next
Screen.MousePointer = vbDefault
For i =  1  To q
If List1.List(i) = "notepad.exe" And List2.List(i) = strUserDomain & "\" & strUserName Then
MsgBox "Блокнот уже запущен",  48 , "Сообщение"
Exit Sub
End If
Next i
xID = Shell("C:\Windows\notepad.exe",  1 )
strComputer = "."
UserName = ""
Password = ""
objItem.Name = ""
strUserName = ""
strUserDomain = ""
End Sub

Private Sub Command2_Click()
Screen.MousePointer = vbHourglass
List1.Clear
List2.Clear
List3.Clear
On Error Resume Next
strComputer = "."
UserName = ""
Password = ""
objItem.Name = ""
strUserName = ""
strUserDomain = ""

Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer, "root\CIMV2", UserName, Password)
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process", ,  48 )
w =  0 
For Each objItem In colItems
    objItem.GetOwner strUserName, strUserDomain
    List1.AddItem objItem.Name
    List2.AddItem strUserDomain & "\" & strUserName
    List3.AddItem objItem.Name & "  " & strUserDomain & "\" & strUserName
'List2.AddItem "Process " & objItem.Name & " is owned by " & strUserDomain & "\" & strUserName & "."
w = w +  1 
Next
Screen.MousePointer = vbDefault
For i =  1  To w
If List1.List(i) = "calc.exe" And List2.List(i) = strUserDomain & "\" & strUserName Then
MsgBox "Калькулятор уже запущен",  48 , "Сообщение"
Exit Sub
End If
Next i
rID = Shell("C:\WINDOWS\System32\calc.exe",  1 )
strComputer = "."
UserName = ""
Password = ""
objItem.Name = ""
strUserName = ""
strUserDomain = ""
End Sub

Private Sub Command3_Click()
Dim strKillNotepad As String
Dim strKillCalc As String
Dim strKillCalc2 As String

If xID =  0  And rID =  0  Then
End
Exit Sub
End If
strKillNotepad = "cmd /x/c taskkill /f /pid " & CStr(xID)
'MsgBox strKillNotepad
Shell (strKillNotepad)
strKillCalc = "cmd /x/c taskkill /f /pid " & CStr(rID)
'MsgBox strKillCalc
Shell (strKillCalc)
End
End Sub

Private Sub Form_Load()
    If App.PrevInstance = True Then
    MsgBox "Программа уже запущена!"
    End
    End If
Screen.MousePointer = vbHourglass
List1.Clear
List2.Clear
List3.Clear
On Error Resume Next
strComputer = "."
UserName = ""
Password = ""
objItem.Name = ""
strUserName = ""
strUserDomain = ""

Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer, "root\CIMV2", UserName, Password)
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process", ,  48 )
z =  0 
For Each objItem In colItems
    objItem.GetOwner strUserName, strUserDomain
    List1.AddItem objItem.Name
    List2.AddItem strUserDomain & "\" & strUserName
    List3.AddItem objItem.Name & "  " & strUserDomain & "\" & strUserName
z = z +  1 
Next
Screen.MousePointer = vbDefault
strComputer = "."
UserName = ""
Password = ""
objItem.Name = ""
strUserName = ""
strUserDomain = ""
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не корректная работа программы / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]