Voir ma source
CLIENT TCP/IP EN UTILISANT LES COMPOSANTS ICS
BUT :
Faire un serveur afin de communiquer en TCP/IP entre la machine server et un client à l'aide des composants ICS
LISTE DES COMMANDES DISPONIBLES POUR LE CLIENT:
SET [Nom]=[Valeur] Insertion d?une variable d?environnement
SET [Nom] Visualisation d?une variable d?environnement
START [Process] [P1] [2] ... [n] Exécution d?une application
EXIT Déconnexion du client
WHO Visualisation des connexions
TIME Visualisation de la date serveur
CMD [Commande] Exécution d?une commande dos
KILL [Process] Suppression d?un process
LISTE DES VARIABLES D ENVIRONNEMENT SYSTEM :
Variables commentaire
SC_WrkDir Répertoire de travail
SC_Usr Nom d?utilisateur
SC_Pwd Mot de passe
SC_Domain Domaine
Ces variables d'environnement sont utilisées pour lancer avec START un process sur un répertoire de travail donnée et avec un autre compte utilisateur (RUNAS)
Source / Exemple :
Voir zip
Conclusion :
A vous de jouer afin d'enrichir la liste des commandes dans la procedure TfrmSvrCmd.ProcessData
2 janv. 2007 à 12:55
1) enlever la référence à UTFile
2) voici le code de UTGetpid
unit UTGetpid;
interface
uses windows, SysUtils;
function FindProcessByModuleNameNT(Name: string): THandle;
implementation
uses
psapi, tlhelp32;
// returns process ID
function FindProcessByModuleNameNT(Name: string): THandle;
var
PIDList: array[0..1023] of THandle;
i: integer;
ListCount, size: cardinal;
hProcess, hModule: THandle;
ModuleName: array[0..MAX_PATH] of char;
begin
result:= 0;
EnumProcesses(@PIDList, sizeof(PIDList), ListCount);
ListCount:= ListCount div sizeof(THandle);
for i:= 0 to ListCount-1 do
begin
// get process handle for each process id we got
hProcess:= OpenProcess(PROCESS_QUERY_INFORMATION +
PROCESS_VM_READ, false, PIDList[i]);
try
if hProcess <> 0 then
begin
// get handle to first module, which is the exe
if EnumProcessModules(hProcess, @hModule,
sizeof(hModule), size) then
begin
// extract the filename
GetModuleFileNameEx(hProcess, hModule,
ModuleName, sizeof(ModuleName));
if AnsiCompareText(ExtractFileName(StrPas(@ModuleName)), Name) = 0 then
begin
result:= PIDList[i];
exit;
end;
end;
end;
finally
CloseHandle(hProcess);
end;
end;
end;
function FindProcessByModuleName9x(Name: string): THandle;
var
hSnapshot: THandle;
next: boolean;
pe: TProcessEntry32;
begin
result:= 0;
hSnapshot:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if hSnapshot = THandle(-1) then
exit;
FillChar(pe, sizeof(pe), 0);
pe.dwSize:= sizeof(pe);
next:= Process32First(hSnapshot, pe);
while next do
begin
if AnsiCompareText(StrPas(@pe.szExeFile), Name) = 0 then
begin
result:= pe.th32ProcessID;
next:= false;
end
else
next:= Process32Next(hSnapshot, pe);
end;
CloseHandle(hSnapshot);
end;
end.
13 avril 2006 à 19:47
13 avril 2006 à 18:36
Build
[Warning] UTSystem.pas(86): Method 'Create' hides virtual method of base type 'TProcess'
[Fatal Error] UTSystem.pas(141): File not found: 'UTFile.dcu'
13 avril 2006 à 17:01
13 avril 2006 à 16:52
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.