Página 2 de 2
Re: Funcoes externas
Enviado: 10 Dez 2009 12:57
por alxsts
Olá!
Creio que, perante o Windows, cada processo tenha o seu ID (PID). Será que ao invés de "matar" o processo pelo nome (Process_Win32_Kill("calc.exe")) , não seria possível fazer isto pelo ID?
Re: Funcoes externas
Enviado: 10 Dez 2009 14:36
por TerraSoftware
Caro colega "alxsts"
É possível sim matar o executavel pelo seu ID (handle), cada processo no windows tem seu handle diferente. Mas é justamente ai que esta o problema, seja só:
Quero, por exemplo, finalizar o programa "Calc.exe", ele esta sendo executado em 3 sessoes diferentes do windows 2003, atraves do TS, cada executada tem seu ID diferente, tipo assim: 230, 1350 e 420. E agora? qual eu finalizo? Lembrando que este handle é um numero definido pelo windows onde nao existe nunhuma informacao ou seguencia que identifique em qual sessao ele esta. O handle é um numero que nao se repete em todas as sessoes abertas, é uma identidade unica, uma localizacao do executavel, cada vez que o executavel é finalizado e executado novamente é definido um novo handle.
A funcao original postada aqui neste post finaliza todas, ou seja, o programa em questao será finalizado em todas as sessoes do windows.
"E agora, José? A festa acabou,..."
Re: Funcoes externas
Enviado: 12 Dez 2009 19:13
por sygecom
Tente assim e veja o que da:
Nesse link abaixo tem o que você quer, teria que apenas adaptar na função postada pelo outro colega.
http://social.technet.microsoft.com/For ... 8e71bd6796
Re: Funcoes externas
Enviado: 14 Dez 2009 16:58
por TerraSoftware
Caro colega sygecom.
O link nao esta funcionando (pelo menos pra mim).
Teria como o amigo postar o assunto aqui?
Pela atenção, obrigado!
Re: Funcoes externas
Enviado: 14 Dez 2009 17:27
por lugab
Aprendi muito, nese tpc...
Parabéns a todos
Re: Funcoes externas
Enviado: 14 Dez 2009 22:20
por fladimir
Pessoal não sei se é pertinente ao assunto, mas fiquei pendurado na função para dar o Refresh no Tray após a função pra fechar a Aplicação, tipo peguei a função q o Sygecom postou e colei da seguinte forma:
Código: Selecionar todos
#pragma BEGINDUMP
#include <windows.h>
#include <windef.h>
VOID MoveMouse();
HB_FUNC( MOVEMOUSE )
{
RECT TrayRect;
GetWindowRect(FindWindowEx(FindWindow("Shell_TrayWnd",NULL),0,"TrayNotifyWnd",NULL),&TrayRect);
POINT Cursor;
GetCursorPos(&Cursor);
while(TrayRect.left+11 < TrayRect.right) {
SetCursorPos(TrayRect.left+10,TrayRect.top+12);
Sleep(1);
TrayRect.left += GetSystemMetrics(SM_CXSMICON)+2;
}
SetCursorPos(Cursor.x,Cursor.y);
}
#pragma ENDDUMP
mas ao compilar da o erro:
Código: Selecionar todos
Building object module for 'obj\UTIL.c'
using C compiler 'BCC32' as defined in 'C:\xHARBOUR\BIN\harbour.cfg'...
Exec: BCC32 -c -D__EXPORT__ -IC:\xHARBOUR\include -d -LC:\xHARBOUR\lib -oobj\UTIL.obj obj\UTIL.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
obj\UTIL.c:
Error E2140 UTIL.PRG 1099: Declaration is not allowed here in function HB_FUN_MOVEMOUSE
*** 1 errors in Compile ***
Done.
Deleting: "obj\UTIL.c"
Done.
O q estou errando ?
Grato e Sucesso!!! :)Pos
Re: Funcoes externas
Enviado: 15 Dez 2009 12:22
por TerraSoftware
Caro colega, tambem tive este problema. A funcao correta é assim:
Código: Selecionar todos
#pragma BEGINDUMP
#include <windows.h>
#include <windef.h>
VOID MoveMouse();
HB_FUNC( MOVEMOUSE )
{
POINT Cursor;
RECT TrayRect;
GetWindowRect(FindWindowEx(FindWindow("Shell_TrayWnd",NULL),0,"TrayNotifyWnd",NULL),&TrayRect);
GetCursorPos(&Cursor);
while(TrayRect.left+11 < TrayRect.right) {
SetCursorPos(TrayRect.left+10,TrayRect.top+12);
Sleep(1);
TrayRect.left += GetSystemMetrics(SM_CXSMICON)+2;
}
SetCursorPos(Cursor.x,Cursor.y);
}
#pragma ENDDUMP
Se vc observar, vai ver que a unica coisa que mudei foi a posicao da linha "POINT Cursor;", nao me pergunte por quê. Simplesmente deu certo, acredito que seja algo relacionado com a posição do mouse que deve ser declarada antes do evento.
Funcoes externas
Enviado: 15 Dez 2009 12:28
por TerraSoftware
Caros colegas. Visto que existe dois post tratando basicamente do mesmo assunto, vou criar um novo tópico, mais especifico, para ajudar a todos que tem o mesmo problema. Eis o link de acesso:
"Finalizando Aplicativo Windows"
Obrigado a todos que ajudaram até aqui.
Se algum Moderador puder travar este post, melhor.
Nota de Moderação:por
Pablo César: Mensagem reditada para inserir o link em questão
Re: Funcoes externas
Enviado: 15 Dez 2009 20:43
por fladimir
Ok deu certo... grato...
Sucesso a tds!!!!
:)Pos