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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Когда начнете назвать темы осмысленно?
Старый 28.02.2009, 19:08   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тогда получай полный список процессов и смотри есть ли там нужный тебе и все
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.02.2009, 19:10   #12
Sane2k
Пользователь
 
Регистрация: 13.02.2009
Сообщений: 10
По умолчанию

наконец-то нашел работающую функцию, однако, интересная вещь данная функция неможет найти процесс taskmnr даже если он запущен почему так незнаю...

uses
SysUtils, tlhelp32;

function IsRunning(sName: string): boolean; // проверяет, запущен ли процесс sName
var
han: THandle;
ProcStruct: PROCESSENTRY32;
sID: string;
begin
Result := false;
han := CreateToolhelp32Snapshot(TH32CS_SNA PALL, 0);
if han = 0 then
exit;
ProcStruct.dwSize := sizeof(PROCESSENTRY32);
if Process32First(han, ProcStruct) then
begin
repeat
sID := ExtractFileName(ProcStruct.szExeFil e);
if uppercase(copy(sId, 1, length(sName))) = uppercase(sName) then
begin
Result := true;
Break;
end;
until not Process32Next(han, ProcStruct);
end;
CloseHandle(han);
end;
Sane2k вне форума Ответить с цитированием
Старый 01.03.2009, 01:27   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может потому что он пишется taskmgr.exe
именно вместе с расширением, хотя в данной функции расширение не обязательно
кстати лучше немного её изменить так как она иногда будет давать неверные результаты
(например есть приложение Primer1.exe, а в функции ищем Primer, и функция выдаст true)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 01.03.2009 в 01:57.
Пепел Феникса вне форума Ответить с цитированием
Старый 04.03.2009, 01:12   #14
Enemy
 
Регистрация: 12.11.2007
Сообщений: 4
По умолчанию

Просто создать припустим 5-сокетов, которые должны слушать 5-разных портов. И создай багатопоточный сервер. Там вить все просто... Вот пример простого сервера. Один поток. WinSock Application.
program Server;
///Done by Zastavnyi Oleh
uses
SysUtils,
WinSock;

const PORT=1845;
BackLog=1;


var
_wData:WSAData;
_POPsocket,ListenSocket:TSocket;
_Server_Addr:sockaddr_in;
_Err:Integer;
ServInf:Array[1..64]of char;

function MakeWord(A, B: Byte): Word;
begin
Result := A or B shl 8;
end;


begin
ServInf:='Example Worck With WinSocket Application. Done By Zastavnyi Oleh';

if WSAStartup(MakeWord(1,1), _wData) <> 0 then
writeln('Init - Bad') else
writeln('Init - OK');

_POPsocket:=Socket(PF_INET,SOCK_STR EAM,IPPROTO_IP);
if _POPsocket= SOCKET_ERROR then
writeln('Socket Crated - Bad') else
writeln('Socket Crated - OK');

_Server_Addr.sin_family:=AF_INET;
_Server_Addr.sin_port:= htons(Port);
_Server_Addr.sin_addr.S_addr:=INADD R_ANY;

_Err:=bind(_POPsocket,_Server_Addr, sizeof(_Server_Addr));
if _Err=0 then
Writeln('Bind - OK') else
Writeln('Bind - Bad');


_Err:=listen(_POPsocket,BackLog);
if _Err=0 then
Writeln('Listen Startup - OK') else
Writeln('Listen Startup - Bad');

_POPsocket:=accept(_POPsocket,0,0);
if _POPsocket=INVALID_SOCKET then
Writeln('Accept - Bad') else
Writeln('Accept - OK [Connectded [1] ]');

_Err:=send(_POPsocket,ServInf,Sizeo f(ServInf),0);
if _Err<>-1 then Writeln('Send Info - OK ', _Err,' byte') else
Writeln('Send Info - Bad');

readln;
end.
Enemy вне форума Ответить с цитированием
Старый 04.03.2009, 18:11   #15
Sane2k
Пользователь
 
Регистрация: 13.02.2009
Сообщений: 10
По умолчанию

Увы, с правельным написанием таскменеджера у меня всегда были проблеммы но как бы я не извращался с написанием данного процесса ничего хорошего не вышло.....и функция его все равно не нашла....
Sane2k вне форума Ответить с цитированием
Старый 04.03.2009, 18:53   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вот еще вариант, но в нем строго нужно писать имя приложения полностью вместе с .exe и лучше проверять начинай с explorer.exe
Код:
Function TForm1.CheckTaskByExe(ExeName:String):boolean;
const
 PROCESS_TERMINATE=$0001;
var
 Co:BOOL;
 FS:THandle;
 FP:TProcessEntry32;
begin
 result:=false;
 FS:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 FP.dwSize := Sizeof(FP);
 Co:=Process32First(FS,FP);
 while integer(Co) <> 0 do
  begin
   if AnsiLowerCase(ExeName)=AnsiLowerCase(ExtractFileName(FP.szExeFile)); then Result:=true;
   Co:=Process32Next(FS,FP);
  end;
 CloseHandle(FS);
end;
вроде так...я просто убрал с нее лишнее ибо исходная функция немного иначе работает у меня(точнее у неё смысл иной)
на всякий случай вот исходный вариант(почти!!!)
Код:
Function TForm1.CheckTaskByExe(ExeName:String):boolean;
const
 PROCESS_TERMINATE=$0001;
var
 Co:BOOL;
 FS:THandle;
 FP:TProcessEntry32;
 i:integer;
 Tasks:array of string;
begin
 i:=0;
 FS:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
 FP.dwSize := Sizeof(FP);
 Co:=Process32First(FS,FP);
 while integer(Co) <> 0 do
  begin
   i:=i+1;
   Setlength(Tasks, i);
   Tasks[i]:=ExtractFileName(FP.szExeFile);
   Co:=Process32Next(FS,FP);
  end;
 CloseHandle(FS);
 result:=false;
 for i:=0 to (Length(Tasks)-1) do if Tasks[i]=ExeName then Result:=true;
end;
последнее 100% работает

Uses SysUtils, tlhelp32; само собой необходимо
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.03.2009, 17:24   #17
Sane2k
Пользователь
 
Регистрация: 13.02.2009
Сообщений: 10
По умолчанию

Спасибо, действительно данная функция находит таскменеджер
Sane2k вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[TcpClient, TcpServer] или [ServerSocket, ClientSocket] работа через прокси DOLBY Работа с сетью в Delphi 2 17.09.2009 05:46
Работа с USB или COM портами АлександрСергеевич Общие вопросы Delphi 2 26.12.2008 04:48
одновременная печать формы и Webbrowser tigr1991 Общие вопросы Delphi 5 01.10.2008 14:43
Работа с ServerSocket и ClientSocket AlDelta Работа с сетью в Delphi 12 28.09.2008 11:18
Работа с Clientsocket и Serversocket prizrak1390 Работа с сетью в Delphi 3 26.04.2008 22:59