![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Fedia |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Приветствую всех !
Задачка такая: запускаю приложение через ShellExecute и как результат функции ShellExecute получаю его указатель. Например:
Необходимо по указателю hApp получить хендл активного окна запущенного приложения в том виде, в котором его возвращает функция FindWindow. Например:
Т.е. мне необходимо из hApp получить AHWND. Возможно ли это реализовать ? Это сообщение отредактировал(а) Fedia - 5.9.2006, 02:49 -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
||||
|
|||||
| bazzzman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 24.7.2006 Репутация: нет Всего: 2 |
Не совсем понял вопрос...
Если надо найти дочернее окно какого-то конкретного окна, то: 1. GetWindow 2. EnumChildWindows 3. FindWindowEx |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Мне нужно найти хендл активного окна приложения, зная хендл самого приложения. Хендл приложения получаю при его запуске посредством ShellExecute. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
CreateProcess + EnumThreadWindows( pi.dwThreadId, ...
|
|||
|
||||
| bazzzman |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 24.7.2006 Репутация: нет Всего: 2 |
Это не то... При чем тут CreateProcess, если "нужно найти хендл активного окна приложения, зная хендл самого приложения"? Вот как это делаю я:
По-хорошему надо сделать более серьезную проверку ошибок... |
||||
|
|||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Не работает. Проверяю так:
bazzzman, кстати сейчас проверил, твоя функция возвращает хендл окна, запустившего приложение. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| bazzzman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 24.7.2006 Репутация: нет Всего: 2 |
Значит это окно имеет фокус ввода. Что не так?
Надо что-то другое? Тогда сформулируй нормально вопрос. hAp:=ShellExecute(0, 'open', 'C:\test.exe', nil, nil, SW_SHOWNORMAL); - возвращает не handle окна:
Значит GetWindowThreadProcessID(hWnd, nil); мы не можем сделать. Нежен threadId => CreateProcess как и предлагал dumb или ShellExecuteEx. И уже потом AttachThreadInput. Думаю информации и так уже достаточно, чтобы ты самостоятельно с этим разобрался. Читай MSDN. |
|||
|
||||
| Fedia |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Вопрос я вроде сформулировал довольно четко:
Твоя функция возвращает: , а нужно: хендл активного окна запущенного через ShellExecute приложения. Разница надеюсь понятна ?
Как раз разбираюсь. За советы спасибо. Думаю перечисленных в этой ветке функций точно хватит для реализации сабжа. А еще спрашиваешь, что не так ... Значит если запускать приложение посредством ShellExecute, то по результату, возвращаемому этой функцией хендл активного окна запущенного (именно через ShellExecute) приложения не получить ? Это сообщение отредактировал(а) Fedia - 5.9.2006, 07:17 -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
||||
|
|||||
| Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
почему? можно
здесь надо заюзать ф-цию pid:=GetProcessId(hApp); дабы поличить пид, а далее юзая EnumThreadWindows(pid,.... Добавлено @ 10:25 правда
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
| Fedia |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
По этой функции ничего нет в справке Windows SDK. Модуль Winbase также отсутствует. Не могу найти модуль, который необходимо было бы подключить, для использования этой функции. Кроме того, функция ShellExecute возвращает:
ЗЫ: спасибо, что отвечаешь, хочу таки добить этот вопрос, давно меня волновавший. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
получается да , т.к. я видел что для получения своего хистенса надо юзать GetModuleHandle с параметром nil (хотя я и не разобрался конкретно что есть этот инстанс А ключевая фраза здесь вот какая ниже ХР СП1 этой фичи нет! (имхо если этой ф-ции нет то проще будет перечислить все процессы в системе и от них взять хендлы и сравнить с нужным) -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Я вообще не придал этой фразе значения, потому, что у меня Windows XP SP2
Ок. Завтра попробую, если время на это будет. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
тогда это в кернеле32, есть такая ф-ция, можно динамически открыть ее через лоадлибрари и попросить адрес этой ф-ции -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Добрался я таки и до этой части. В общем ты частично прав, в библиотеке kernel32.dll есть функция GetProcessId. Правда если в качестве параметра ей передавать результат возвращаемый функцией ShellExecute, то GetProcessId возвращает 0. Следовательно, не такой параметр ей требуется. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
GetProcessId требует хендл процесса , а не его хистенс Добавлено @ 08:56 http://www.codeproject.com/win32/Remote.asp -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Я же уже подводил к этому
Или я тебя не понял ? -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
скорее всего
смотрел? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Посмотрел. Не нашел там прямого указания, как вообще можно использовать HINSTANCE от ShellExecute. Кроме того заинтересовала терминология, озвученная автором статьи. Имеем:
Является ли результат, возвращаемый ShellExecute чем-то из вышеперечисленного ? Мне кажется что нет. Romikgy, в общем, хватит говорить загадками, колись, что хотел сказать -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Че ?! да ни че просто помочь хотел, а там есть 3 способа получения пида чужего процесса
ща посмотрю -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
| Romikgy |
|
||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
кса а вместо этого , вот это юзать не? ShellExecuteEx
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||
|
|||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
извините, что влезаю: а чем CreateProcess то не угодил? к чему эти шаманские танцы с бубнами?..
|
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Не просто хотел, а и помогаешь. Я думал, что у тебя уже есть решение задачи, и ты пытаешься натолкнуть меня на какую-то мысль. Так что надеюсь без обид. Ну мне ж уже на самом деле dumb предлагал уже использовать CreateProcess. Если бы мне требовалось срочное решение проблемы, я бы этим вариантом воспользовался. А мне лишь хотелось узнать, можно ли использовать результат функции ShellExecute для поиска окон запущенного приложения. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Только у меня не получилось отделить хендл апликейшена
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Fedia |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Да вообще, то, что называется
Romikgy, Спасибо за помощь в рассмотрении этого вопроса -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Fedia, Имхо я привел код который ищет то что те нужно по хистенсу, или нет?
А я имел ввиду, не хендл процесса апликейшена , а хендл окна апликейшена! (я проверял на приложении написаном на дельфи!) Ведь в этом приложении имеется окно апликухи и главная форма(окно) т.е. 2 окна и как определить какое окно относится к апликухе , а какое к форме , я пока не в курсе, но если знаешь название окна то можно по нему отсеят, тогда вопросов не будет! Добавлено @ 08:57 Пазям. PS только я так и не понял помогло те это или нет? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Fedia |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Нет, просто эта ветка начинает напоминать сломанный телефон. Не исключаю, что я не могу точно сформулировать свой вопрос, возможно ты не можешь меня понять, возможно я не могу понять твои ответы (я ведь только принялся за изучение API). ХЗ в общем.
Попробуй в качестве параметра функции GetHWND_from_Histance передать HINSTANCE от ShellExecute, а не HMODULE от GetModuleHandle. Хоть эти два типа и объявлены в Delphi как Саrdinal, но похоже разнятся по смыслу. Может тогда будет понятно, что я пытался реализовать. Ведь именно от HINSTANCE, возвращаемого ShellExecute я пытался получить перечень окон. И неоднократно об этом писал. Но все равно, благодаря твоим примерам и ссылкам на статьи я много чего полезного для себя подчеркнул. За это и +. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
попробую когда домой дойду а ф-ция ShellExecute у мя где то был исходник , так он юзает GetModuleHandle , найду выложу -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Попробуй конечно.
Результирующие значения этих функций находятся в разном числовом диапазоне. Если HINSTANCE от ShellExecute как правило не больше 1000, то HMODULE от GetModuleHandle переваливает за миллион. А исходник посмотреть интересно было бы. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| Romikgy |
|
||||||||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Добавлено @ 23:31 т.е. в конце все равно приходим к
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
||||||||
|
|||||||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
Кто бы сомневался P. S. А вопрос то решён или вы за так ликбез устроили? |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
А че? человек спрашает , я отвечаю -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
Просто интересно стало. Тема досих пор не тонет и вопрос вроде не помечен как решённый. P. S. Вдруг я тоже хочу поучавствовать |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Оказалось, что вопрос скорее всего не имеет решения -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
Еще одно предложение, напоследок, правда оно не будет иметь отношения к
им только запускаешь файл, а потом делаешь снимок всех процессов, и отбираешь те нужный по имени ехе файла, после этого перечисляешь все окна данного процесса и находишь нужно те окно ,и в конце получается и волки сыты и овцы целы, т.е. юзаешь shellexecute и получаешь хендл окна -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
-------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 13 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
Так вот, что требуется то
При запуске будет выдано окошко с сообщением, что сейчас будут перечислены окна запущенного процесса notepad.exe. Для большей наглядности можно в запустившемся окне Блокнота сначала вызвать окно замены (Ctrl+H) и плюс к этому вызвать пункт меню Открыть. В этом случае будут перечислены 3 дочерних окна (а точнее их текст, полученый через GetWindowText) и их описатели. У меня это выглядит так:
При проверке учитывается тот факт, что окно что бы быть окном должно иметь хотя бы один флаг среди флагов перечисленных в aTrueWndStyles и иметь флаг WS_VISIBLE. Код не универсальный и он умеет определять окна только одного потока, ID которого возвращается в pi.dwThreadId. Конечно для универсальности нужно определять окна всех потоков. Для этого придётся немного усложнить код и получить ID всех потоков и уже для каждого вызвать EnumThreadWindows. Получить список всех потоков процесса можно через функцию CreateToolhelp32Snapshot с флагом TH32CS_SNAPTHREAD и далее перечислить их из получившегося снимка при помощи Thread32First & Thread32Next. P. S. Извиняюсь, если боян P. S. S. Коментарии не писал. Код довольно прозрачный Это сообщение отредактировал(а) Yanis - 18.9.2006, 14:40 |
||||
|
|||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
Вот и потонула ветка А через ShellExecuteEx тоже самое реализовать сможешь ? Я пробовал так:
-------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
Fedia, для нормальной работы с хэндлами таки стоит использовать CreateProcess. почему? - вот цитата из MSDN по SHELLEXECUTEINFO.hProcess:
|
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
Почему? Потому что пример с CreateProcess, а не с ShellExecute(Ex)? Ну да ладно... Вобщем тебе выбирать каким способом пользоваться. Проблема решается с помощью функции GetProcessId. Присутствует она начиная с XP, поэтому даже в 2000 работать уже не будет. |
|||
|
||||
| Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 1 Всего: 13 |
dumb,
Ага, читал я справку MSDN по SHELLEXECUTEINFO. И судя по ней в моих задачах hProcess будет не NULL. А в большей эффективности использования CreateProcess я убедился после того, как стало понятно, что ShellExecute(Ex) все равно вызывают CreateProcess. Поэтому полностью с тобой согласен Yanis,
Нет, вопрос в этой ветке изначально звучал даже уже, и касался он только ShellExecute. Единственно, что мне необходимо было узнать в этой ветке, это то, что результат ShellExecute для решения задачи использовать не получиться. А за твой пример отдельное спасибо. Ах да, мне же эту функцию Romikgy уже приводил, сорри. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |