Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Выполнение полезной работы во время простоя .... Добавлено: 19.11.02 09:59  

Автор вопроса:  Korjavin | Web-сайт: нету.сайта.вот

Программе нужно провести очень долгие, и очень муторные вычисления, результат которых нужен не к определенному сроку а "как посчитает, так посчитает", но в то же время пользователю подчас нужно что бы время отклика было мало...

Каким образом в VB можно определить простаивает сейчас компьютер или нет, и посчитать все в это время...

Заранее всем спасибо.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Андрей Щёкин [darxeth]



ICQ: 161560107 

Вопросов: 9
Ответов: 52
 Web-сайт: www.livejournal.com/users/darxeth_digital
 Профиль | | #1
Добавлено: 19.11.02 19:30

Это можно сделать с помощью функции SetWindowsHookEx с параметром idHook = WH_FOREGROUNDIDLE.

Конретнее - видимо, что-то вроде

hHook =SetWindowsHookEx(WH_FOREGROUNDIDLE, AddressOf ForegroundIdleProc, App.hInstance, ByVal 0&;)

Private Function ForegroundIdleProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    CallNextHookEx hHook, nCode, wParam, lParam

   'Your code here

End Sub

 

Ответить

Номер ответа: 2
Автор ответа:
 Korjavin



Вопросов: 5
Ответов: 11
 Web-сайт: нету.сайта.вот
 Профиль | | #2
Добавлено: 21.11.02 06:19

Спасибо за помощь, но я не до конца понял...

Я объявил функцию

Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long

Затем вставил ваш код в проект, но при компиляции мне пишет сообщение о том, что переменная WH_FOREGROUNDIDLE неопределена, я так понимаю, что эту константу нужно как-то объявить... Не подскажете ли как?

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 23.11.02 23:57

Public Const WH_FOREGROUNDIDLE = 11

Ответить

Номер ответа: 4
Автор ответа:
 Korjavin



Вопросов: 5
Ответов: 11
 Web-сайт: нету.сайта.вот
 Профиль | | #4
Добавлено: 26.11.02 08:33

Все это удачно скомпилировалось, но! Я запускаю программу м жду наступит ли когда нибудь "время простоя", прождал 2 часа, других приложений не было запущено, но мой код так и не был выполнен... Может посоветуете что-нибудь?

Ответить

Номер ответа: 5
Автор ответа:
 Андрей Щёкин [darxeth]



ICQ: 161560107 

Вопросов: 9
Ответов: 52
 Web-сайт: www.livejournal.com/users/darxeth_digital
 Профиль | | #5
Добавлено: 26.11.02 17:06

Видимо дело в том, что Hook глобальный. Т.е. функцию ForegroundIdleProc надо обьявлять в отдельной DLL и подгружать её отдельно. Честно говоря на практике пока этого не делал  , поэтому пример привести не могу.

Хотя в ближайшее время собираюсь попробовать.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам