Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверить наличия окна в памьяти / 11 сообщений из 11, страница 1 из 1
29.12.2011, 16:43
    #37599327
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
Путаница. Есть три программы. Работают вместе по UDP. Не вирус . 1.Показ видео с логотипом/ 2.исполнение по графику/3. смотрящая прога чтоб не было зависаний. Во второй программке много завязок через таймера и в разных окнах данной программы. Не могу отследить. Может два дня работать без сбоев, потом обходит каким то образом закрытия unload Player, причем в LOG файле четко вижу что все срабатывает. Фишка в том что я использую 12 таймеров на форме и один без формы
Код: vbnet
1.
2.
3.
Public Const TIME_PERIODIC = 1  '  program for continuous periodic event
Public Declare Function timeSetEvent Lib "winmm.dll" (ByVal uDelay As Long, ByVal uResolution As Long, ByVal lpFunction As Long, ByVal dwUser As Long, ByVal uFlags As Long) As Long
Public Declare Function timeKillEvent Lib "winmm.dll" (ByVal uID As Long) As Long


Я думаю из за него окно может повторно открываться, поскольку в вызванной таймером процедуре есть ссылка на отдельный элемент формы и думаю что из за этого она повторно инициализируется. В результате черный экран (так как флаги вспомагательные выключены) и играет музыка (движок работает без отказано, микширует самостоятельно). Ну наконец идем к простому банальному вопросу. В предыдущей форме я просто дополнительно хочу проверить нет ли открытой формы, даже если она в памяти висит. Напрямую к свойству например TAG интересующей формы я не могу обращаться так как загружу ее в память.
Выход конечно есть.
Я создал на каждую форму флаг. Например Public ZmFrmIsPlay as boolean
В событии Form_Initialize() делаю ZmFrmIsPlay = true
а при Form_Unload делаю ZmFrmIsPlay = false

Может это по китайски ? Есть нормальный простой способ проверять загруженность форм (окон) своего проекта в памьяти ?
...
Рейтинг: 0 / 0
29.12.2011, 18:54
    #37599513
формы
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
есть коллекция Forms в ней загруженные формы можно увидеть но только для текущего dll. exe модуля если прога из несольких модулей то придется вручную модули перебирать если надо все формы во всех модулях перечислить
...
Рейтинг: 0 / 0
30.12.2011, 18:51
    #37600557
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
Спасибо. Отлично. Работает
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Command1_Click()
  Dim d As Control
  For Each f In VB.Forms
   Debug.Print f.Name
  Next
End Sub

Private Sub Command2_Click()
  Form2.Caption = "wqwq"
End Sub


Жаль что так нельзя проверить именно конкретные формы
Код: vbnet
1.
2.
3.
Private Sub Command3_Click()
  MsgBox VB.Forms("form2")
End Sub
...
Рейтинг: 0 / 0
30.12.2011, 19:25
    #37600575
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
Андрей159Жаль что так нельзя проверить именно конкретные формыпочему нельзя?
...
Рейтинг: 0 / 0
30.12.2011, 19:26
    #37600576
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
Shocker.ProАндрей159Жаль что так нельзя проверить именно конкретные формыпочему нельзя?а, нельзя, может быть загружено несколько экземпляров одной формы.
...
Рейтинг: 0 / 0
31.12.2011, 02:47
    #37600787
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
именно такую запись я придумал VB.Forms("form2"). а в реале ошибка
...
Рейтинг: 0 / 0
31.12.2011, 11:26
    #37600866
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
Андрей159именно такую запись я придумал VB.Forms("form2"). а в реале ошибкаMSDNForms(index)

The placeholder index represents an integer with a range from 0 to Forms.Count - 1.
...
Рейтинг: 0 / 0
31.12.2011, 11:28
    #37600868
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
по имени обращаться нельзя, потому что может быть загружено несколько экземляров одной и той же формы и получится, что ключ в коллекции не уникален
...
Рейтинг: 0 / 0
31.12.2011, 12:18
    #37600883
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
ага. понятно. спасибо.
Код: vbnet
1.
MsgBox VB.Forms(1).Name


Можно создать функцию с on error и VB.Forms(n).Name......... as boolean
...
Рейтинг: 0 / 0
31.12.2011, 12:29
    #37600884
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
Андрей159,

да нет же.
При n<forms.count ошибка не возникнет
...
Рейтинг: 0 / 0
31.12.2011, 12:56
    #37600886
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проверить наличия окна в памьяти
получилось

Чистил хост файл и дальше не пускает на сайты Майкрософт и антивирусные. Раз был прогнал антивируской, нашло угрозу, убрало и до перезагрузки все страницы открывало, а теперь снова не открывает. В процесах ничего левого нет, в автозагрузках также. Наверное малварь сидит
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Проверить наличия окна в памьяти / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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