Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизНе хочет работать в OnShow(OnCreate): if Process32First(handler,d Найти похожие ветки
← →
Arturchik © (2004-04-05 15:11) [0]Точнее if Process32First(handler,data) then... работает только постоянно идёт по else, исли запустить его в OnActivate то всё в порядке но уже поздно... :-( в чём проблема? А главное как её решить? :-)
← →
VMcL © (2004-04-05 15:13) [1]У тебя ошибка в программе. Если точнее, то в 17-й строке.
← →
Arturchik © (2004-04-05 15:22) [2]ааа... непонял?
← →
Digitman © (2004-04-05 15:23) [3]
> всё в порядке но уже поздно
угу ... уже кирдык приключился .. и всякий раз будет приключаться, когда окно формы будет получать фокус ввода
> работает только постоянно идёт по else
т.е. работает , но чуть-чуть)..
← →
Arturchik © (2004-04-05 15:27) [4]Нееет, она вообще не должна идти по else, if там нужен для контроля, а не для выбора. А тут идёт по else и хоть ты тресни. Запускаю кнопкой или OnActivate работает, а в OnCreate или OnShow ХРЕН.
← →
Digitman © (2004-04-05 15:53) [5]
> OnActivate работает, а в OnCreate или OnShow ХРЕН
а ХРЕН поймешь, понимаешь ли ты логику и последовательность возникновения тех или иных событий объекта-формы ...
а был бы еще косой десяток разных событий - во всех бы перепробовал свой код ? МОЛ, авось заработает и ХРЕН с ним ? или как ?
почему в OnCreate() не послать самому себе PostMessage(), в обработчике которого и реализовать цикл енумерации процессов ?
это - раз
второе.
енумерация процессов в системах на НТ-платформе (каковой является ХР) должна производиться средствами psapi , а не средствами tlhelp32
← →
Игорь Шевченко © (2004-04-05 15:55) [6]
> енумерация процессов в системах на НТ-платформе (каковой
> является ХР) должна производиться средствами psapi , а не
> средствами tlhelp32
Да на XP это без разницы :)
← →
Digitman © (2004-04-05 15:57) [7]
> без разницы
мого быть, мого быть)
← →
Arturchik © (2004-04-05 15:59) [8]>почему в OnCreate() не послать самому себе PostMessage(), в >обработчике которого и реализовать цикл енумерации процессов ?
это как?
← →
Игорь Шевченко © (2004-04-05 16:15) [9]Arturchik © (05.04.04 15:59)
procedure TMyCoolForm.FormCreate (Sender: TObject);
begin
PostMessage(Handle, UM_EnumProcesses, 0, 0);
end;
← →
Digitman © (2004-04-05 16:17) [10]это - к верху
приведи полный код для начала
← →
Arturchik © (2004-04-05 19:03) [11]procedure Thread.DoWork;
begin
handler:=CreateToolhelp32Snapshot(TH32_SNAPPROCESS,0);
if Process32First(handler,data) then
while Process32Next(handler,data) do
поток нужен обязательно
← →
GrayFace © (2004-04-06 14:56) [12]А разве не льзя перебрать процессы обычным WinAPI?
Скажи, зачем тебе это? Может цель лучше делать по-другому.
← →
Kerk © (2004-04-06 15:39) [13]размер структуры
data
установи...data.dwSize := SizeOf(data);
← →
Digitman © (2004-04-06 16:36) [14]
> поток нужен обязательно
угу .. и ты еще поди DoWork в Synchronize() обернул
← →
Arturchik © (2004-04-07 00:32) [15]>угу .. и ты еще поди DoWork в Synchronize() обернул
Естественно
← →
Arturchik © (2004-04-07 00:36) [16]Kerk - спасибо, заработало
← →
Digitman © (2004-04-07 09:29) [17]
> Естественно
малацца
продолжай в том же духе - бездумно сдирать код из статей
← →
Arturchik © (2004-04-07 17:39) [18]> продолжай в том же духе - бездумно сдирать код из статей
вообще-то поток используется по назначению...
← →
Digitman © (2004-04-08 09:23) [19]да не используешь ты его "по назначению" !
в результате применения метода синхронизации метод DoWork будет исполняться в основном кодовом потоке процесса .. весь весь смысл использования доп.код.потока при этом пропадает
← →
Arturchik © (2004-04-08 19:20) [20]Synchronize(Method: TThreadMethod) - синхронизирует выполнение метода процесса, позволяя ему работать параллельно с другими процессами.
Из статьи с этого сайта
А мне это и нужно, так что не надо ля ля
← →
VMcL © (2004-04-08 19:53) [21]>>Arturchik © (08.04.04 19:20) [20]
procedure Synchronize(Method: TThreadMethod);
Executes a method call within the main VCL thread.
← →
Digitman © (2004-04-09 08:41) [22]
> Arturchik
> Из статьи с этого сайта
а головой думать будем ? иные источники инф-ции штудировать ? сопоставлять ? анализировать ? принимать решение ? или статья г-на Кариха - панацея от болезней головы ?
← →
Kerk © (2004-04-09 09:42) [23]
> Arturchik © (07.04.04 00:36) [16]
> Kerk - спасибо, заработало
Если у человека проблемы с tlhelp32, то в 99% случаев из-за того, что забывают размер структуры указать...
Я на подобные вопросы уже не глядя отвечаю. :)
← →
Arturchik © (2004-04-09 14:39) [24]> Если у человека проблемы с tlhelp32, то в 99% случаев из-за того, что забывают размер структуры указать...
Будем знать :-)
← →
Arturchik © (2004-04-09 14:46) [25]> Digitman
Тебе не надоело?
Ты бы лучше помог как Kerk например, а не нёс всякую ахинею. Если ты хочеш сказать что в статье г-на Кариха ошибка. Так и скажи. Но ни мне, а ему лично и тем кто этот сайт делал и эту статью размешал.
> а головой думать будем ?...
Я тебя не оскорблял и опускаться до этого не собираюсь, и будь добр не преврашай форум в.................. :-)
← →
Digitman © (2004-04-09 15:09) [26]
> Если ты хочеш сказать что в статье г-на Кариха ошибка. Так
> и скажи
так и скажу.
потому что процитированная тобой из статьи фраза - полная чушь, набор слов, слабо связанных как терминологически, так и концептуально
зато чуть ниже тот же Карих "оправдывается", ссылаясь на реально работающий и грамотно реализованный пример из состава демо-проектов , идущих вместе с Делфи
цитирую :
P.S. Отличный пример работы с TThread можно найти в подкаталоге Demos\Threads каталога, куда Вы установили Borland Delphi.
ты рассматривал этот проект ? вникал в его код ? пытался хоть сколь-либо понять, почему там метод Synchronize() применяется не везде где ни попадя, а в строго определенных строчках ?
вряд ли читал и/или вникал .. так что "так что не надо ля ля" - вот это не надо здесь, сударь !
← →
Arturchik © (2004-04-09 18:12) [27]НЕТ! ля ля - это в любом случае, ибо объяснить что к чему можно было и сразу. А нести всякую..., о том какой я...!
И всё равно я считаю что в моём счучае синхронизация нужна, а говорить об обратном вы не можете ибо не видели всей программы.
← →
Digitman © (2004-04-09 18:20) [28]
> Arturchik © (09.04.04 18:12) [27]
да пойми ты, голова садовая, что если в теле DoWork() нет ни единого обращения к потоконебезопасным VCL-контролам/компонентам, то синхронизировать этот метод с осн.код.потоком не только нет необходимости, но и абсолютно бестолково - ведь исполнение метида будет поставлено в очередь обработки оконных сообщений осн.потока !!!
← →
Digitman © (2004-04-09 18:42) [29]
> я считаю что в моём счучае синхронизация нужна
синхронизация обоснована только тогда, когда ей подвергаются не все подряд вызовы (методов или каких-то иных п/программ - неважно), а только те вызовы, которые небезопасно делать в параллель с потенциально возможными аналогичными вызовами со стороны других потоков .. в случае с VCL-приложением - вызовы со стороны осн.потока ...
синхронные вызовы, выполняемые с использованием Synchronize(), становятся в очередь оконных сообщений осн.потоку приложения .. и если, к примеру, в обработчике какого-то события формы выполняется длительный цикл, то исполнение метода DoWork будет задержано до тех пор, пока не завершится цикл и, в конечном итоге, исполнение обработчика тек.события формы ... а таких событий - уйма !!
← →
Arturchik © (2004-04-10 10:35) [30]ооо...после 9 бесполезных постов ты решил всё таки объяснить в чём проблема. Постараюсь это переварить, может ты и прав.
← →
Arturchik © (2004-04-10 10:44) [31]ну так мне это и надо. Моя прога выполняет несколько операция и некоторые должны выполняться сразу(ибо они hook), а некоторые(как раз её код и обсуждался) должны выполнятся когда им "можно". Если я тебя правильно понял...
P.S. Кстати если ты уж всё время толдычиш про чтение разных статей и их анализ...Не подскажеш где можно прочитать о mousehook, а то прочитал я уже много но чтобы понять как это работает...
← →
Digitman © (2004-04-10 11:08) [32]
> после 9 бесполезных постов
действительно бесполезных ... потому как на их протяжении я пытался сделать так, чтобы ты думал самостоятельно ... моя же задача - направить в верное русло ход твоих рассуждений по проблеме и ее решению, дать инф-цию к размышлению, а не разжевывать тебе все и вся
← →
Arturchik © (2004-04-10 12:52) [33]не люблю людей считаюших себя очень умными с способными всех учить. особенно когда они даже не знают с кем говорят...
P.S. чтоюы не разводить тут... ты или ответь на мой последний пост или тема закрыта.
← →
Digitman © (2004-04-10 13:13) [34]
> или ответь на мой последний пост или тема закрыта
отвечаю.
на этом сайте в числе прочих статей есть статья по глобальным хукам с подробным разбором демо-примера
кр. этого есть станд.хэлп, в котором есть описание ф-ции SetWindowsHookEх(), в т.ч. - описание ее вызова с параметром WH_MOUSE и соответствующих задействуемых структур данных
← →
Arturchik © (2004-04-10 18:48) [35]будем искать.
P.S. На сайте не самым удобным образом размещены статьи
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.04 c