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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2010, 19:17   #21
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

вот теперь я окончательно запутался как всё это обьединить...
Nice42ru вне форума Ответить с цитированием
Старый 20.01.2010, 19:52   #22
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Но надо же учиться, вот я и учусь...
Я в 9 классе на информатике играем в боберменов xD учителю по....
Лучше помог бы сделать =)
Nice42ru вне форума Ответить с цитированием
Старый 20.01.2010, 20:27   #23
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
function CloseWnd(Handle:HWND;Text:PANSIChar):bool;stdcall;
var s:ANSIstring;
     PId,PH:integer;
begin
 result:=true;
 SetLength(s,512);
 GetWindowTextA(Handle,PANSIChar(s), 512);
 SetLength(s,lStrLen(PANSIChar(s)));
 if pos(ANSIUpperCase(string(Text),ANSIUpperCase(s))=0 then exit;
 GetWindowThreadProcessId(Handle,@PId);
 PH:=OpenProcess(PROCESS_TERMINATE,false,PID);
 TerminateProcess(PH,0);
 CloseHandle(PH);
end;

procedure TForm1.FormClick(Sender: TObject);
var P:PANSIChar
begin
 P:=strNew(PANSIChar(Edit1.Text));
 EnumWindows(@CloseWnd,integer(P));
 DisposeStr(P);
end;
вот этот код закроет все процессы окна которых содержат текст(без учета регистра) из Edit1

PS: надеюсь у вас Делфи не 2009?(короче без Юникода)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.01.2010, 20:37   #24
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

[Ошибка] Unit1.pas(34): Too many actual parameters
[Ошибка] Unit1.pas(34): Incompatible types: 'String' and 'Integer'
[Ошибка] Unit1.pas(45): Undeclared identifier: 'P'


У меня delphi 7 (build 4.453)
Nice42ru вне форума Ответить с цитированием
Старый 20.01.2010, 21:09   #25
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
function CloseWnd(Handle:HWND;Text:PANSIChar):bool;stdcall;
var s:ANSIstring;
     PId,PH:integer;
begin
 result:=true;
 SetLength(s,512);
 GetWindowTextA(Handle,PANSIChar(s), 512);
 SetLength(s,lStrLen(PANSIChar(s)));
 if pos(ANSIUpperCase(string(Text)),ANSIUpperCase(s))=0 then exit;
 GetWindowThreadProcessId(Handle,@PId);
 PH:=OpenProcess(PROCESS_TERMINATE,false,PID);
 TerminateProcess(PH,0);
 CloseHandle(PH);
end;

procedure TForm1.FormClick(Sender: TObject);
var P:PANSIChar;
begin
 P:=strNew(PANSIChar(Edit1.Text));
 EnumWindows(@CloseWnd,integer(P));
 strDispose(P);
end;
вот исправил...пара опечаток была(извините уставший)
проверил...ввел в Edit Блокнот и мне его закрыло
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.01.2010, 11:23   #26
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Cпасибо, всё работает отлично, хотелось бы подружить её с Memo
Сделал следющее:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var 
P:PANSIChar;
i: integer;
begin
for i:=0 to memo1.lines.count-1 do
 P:=strNew(PANSIChar(Memo1.Lines[i]));
 EnumWindows(@CloseWnd,integer(P));
 strDispose(P);
end;
end.
Но программа работает "не адекватно" закрывает одну из всех вписанных программ, предпочтительно закрывает ту, которая в Memo записана в конце.
В чём я ошибся?
Nice42ru вне форума Ответить с цитированием
Старый 21.01.2010, 11:51   #27
IT-man
АльTRUEи$т
Форумчанин
 
Аватар для IT-man
 
Регистрация: 19.03.2009
Сообщений: 784
По умолчанию

В цикле после do надо begin и еще один end; в концеперед end. Куда ж вы лезете если еще даже циклы толком не освоили.
Цитата:
«Никто не войдет в Рай, имея хотя бы крупицу гордыни в своем сердце». «Аллах Красив и любит красоту. Гордыня означает отказ от истины и высокомерие»

Последний раз редактировалось IT-man; 21.01.2010 в 11:54.
IT-man вне форума Ответить с цитированием
Старый 21.01.2010, 11:55   #28
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Точно, всё заработало, спасибо!
Nice42ru вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как убить процесс зная его имя? One.Love Win Api 14 18.02.2012 14:31
Как убить процесс(с++) progdev Общие вопросы C/C++ 2 22.11.2009 21:30
Событие click по заголовку формы? Polotenchik Общие вопросы Delphi 3 24.06.2009 12:48
убить процесс по его идентификатору - Работа с процессами ACE Valery Общие вопросы C/C++ 8 04.06.2009 21:51
Убить процесс, md5, архивация Igoressicus Помощь студентам 1 16.01.2009 10:37