Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2009, 22:48   #1
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию работа с чужими окнами

Код:
program wndfucker;
uses
  windows,
  Messages;

//Эта функция вызывается, когда найдено дочернее окно
function EnumChildWnd(h:hwnd):boolean; stdcall;
begin
if h=0 then exit;
SendMessage(h,WM_SETTEXT,0,lparam(LPCTSTR('X с тобой')));
 result:=true;
end;
//Эта функция вызывается, когда найдено главное окно
function EnuinWindowsWnd(h: hwnd): boolean; stdcall;
begin
if h=0 then exit;
SendMessage(h,WM_SETTEXT,0,lparam(LPCTSTR('Х с тобой')));
EnumChildWindows(h,@EnumChildWnd,0);
result:=true;
end;
var
h:THandle;

begin
//Запускаем бесконечный цикл
while true do
begin
//Запускаем перечисление всех окон
EnumWindows(@enumwindows,0);
//Делаем задержку в 1000 мс
h:=CreateEvent(nil, true, false, '') ;
WaitForSingleObject(h, 1000);
CloseHandle(h);
end;
end.
вот прога которая ищет окна и меняет заголовки...все вроде компилируется без ошибок..но когда я запускаю прогу то происходит ошибка runtime error 216 at 000e0434...кто нибудь может помочь с этим????
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 05.10.2009, 22:54   #2
Манжосов Денис :)
Участник клуба
 
Регистрация: 29.01.2008
Сообщений: 1,039
По умолчанию

Попробуй вот так:
Код:
begin
//Запускаем бесконечный цикл
while true do
begin
//Запускаем перечисление всех окон
if EnumWindows(@enumwindows,0) = false then Halt;
//Делаем задержку в 1000 мс
h:=CreateEvent(nil, true, false, '') ;
WaitForSingleObject(h, 1000);
CloseHandle(h);
end;
end.
Манжосов Денис :) вне форума Ответить с цитированием
Старый 06.10.2009, 00:22   #3
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от Манжосов Денис :) Посмотреть сообщение
Попробуй вот так:
Код:

if EnumWindows(@enumwindows,0) = false then Halt;
не получаеться..пишет тоже самое
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 06.10.2009, 09:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
@enumwindows
Что это за бред? Где у тебя реализация этой функции?
И вообще - описание для этой функции не такое, как ты описал, так что бегом читать MSDM про EnumWindows
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2009, 11:06   #5
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

может все таки вот так Copyright Фленов
Код:
program Project1;

uses
  windows,
  Messages;

//Эта функция вызывается, когда найдено дочернее окно
function EnumChildWnd(h: hwnd): BOOL; stdcall;
begin
 if h=0 then exit;
 SendMessage(h,WM_SETTEXT,0,lparam(LPCTSTR('][ с тобой')));
 Result:=true;
end;

//Эта функция вызывается, когда найдено главное окно
function EnumWindowsWnd(h: hwnd): BOOL; stdcall;
begin
 if h=0 then exit;
 SendMessage(h,WM_SETTEXT,0,lparam(LPCTSTR('][ с тобой')));
 EnumChildWindows(h,@EnumChildWnd,0);
end;

var
 h:THandle;
begin
 //Запускаю цикл
 while true do
  begin
   //Запускаю перечисление всех окон
   EnumWindows(@EnumWindowsWnd,0);

   //Делаю задержку в 100 мс.
   Sleep(1000);
  end;
end.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 06.10.2009, 11:20   #6
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от ОДИНОЧЕСТВО В СЕТИ Посмотреть сообщение
может все таки вот так Copyright Фленов
Код:
 while true do
  begin
   //Запускаю перечисление всех окон
   EnumWindows(@EnumWindowsWnd,0);

   //Делаю задержку в 100 мс.
   Sleep(1000);
  end;
end.
выдает ту же ошибку....может кто исправит????
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 06.10.2009, 11:32   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
может кто исправит????
А MSDN кто читать будет, а?

Код:
program Project1;
  {$APPTYPE CONSOLE}
uses
  windows,
  Messages;

//Эта функция вызывается, когда найдено главное окно
function EnumWindowsWnd(h: hwnd;p:Integer): BOOL; stdcall;
var a:array[1..100] of char;
begin
 SendMessage(h,WM_GETTEXT,100,integer(@a));
 writeln(a);
 Result:=true;
 //EnumChildWindows(h,@EnumChildWnd,0);
end;

var
 h:THandle;
begin
 //Запускаю цикл

   //Запускаю перечисление всех окон
   EnumWindows(@EnumWindowsWnd,0);
  readln;
   //Делаю задержку в 100 мс.
end.
Пример ясен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.10.2009, 12:18   #8
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А MSDN кто читать будет, а?

Код:
program Project1;
  {$APPTYPE CONSOLE}  
uses
  windows,
  Messages;

//Эта функция вызывается, когда найдено главное окно
function EnumWindowsWnd(h: hwnd;p:Integer): BOOL; stdcall;
var a:array[1..100] of char;
begin
 SendMessage(h,WM_GETTEXT,100,integer(@a));
 writeln(a);
Пример ясен?
{$APPTYPE CONSOLE} если дописать эту строчку то прога сразу закрываеться после запуска...пример не ясен зачем нам массив и writeln?? а насчет MSDN я бы рад почитать если бы знал что ты имеешь ввиду....а так у меня прога запускаеться и после того как я просто изменил имя проги....вроде работает,но переодически выдает ошибку
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось betirsolt; 06.10.2009 в 12:22.
betirsolt вне форума Ответить с цитированием
Старый 06.10.2009, 12:52   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
{$APPTYPE CONSOLE} если дописать эту строчку то прога сразу закрываеться после запуска
Я писал пример получения окон.
Вместо твоей хакершины пример получает заголовок окна, и пишет его в массив символов а, который выводит на экран - смысл примера показать как вызывать функцию EnumWindows

По поводу MSDN: http://social.msdn.microsoft.com/Sea...umWindows&ac=8
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с окнами Visual c++ dampirik Visual C++ 5 17.08.2009 18:22
Вопрос: работа с окнами Акашаев Нурлан Общие вопросы Delphi 1 26.06.2008 10:12
работа с чужими программами Rend1 Win Api 31 02.03.2008 16:42
работа с окнами Briz Общие вопросы Delphi 5 07.10.2007 22:20
работа с "чужими" окнами zetrix Безопасность, Шифрование 1 29.10.2006 11:28