Funcoes externas
Moderador: Moderadores
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Funcoes externas
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?
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?
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
-
TerraSoftware
- Usuário Nível 3

- Mensagens: 353
- Registrado em: 28 Jul 2004 13:14
- Localização: Cianorte-PR
- Contato:
Re: Funcoes externas
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,..."
É 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,..."
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Funcoes externas
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
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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
TerraSoftware
- Usuário Nível 3

- Mensagens: 353
- Registrado em: 28 Jul 2004 13:14
- Localização: Cianorte-PR
- Contato:
Re: Funcoes externas
Caro colega sygecom.
O link nao esta funcionando (pelo menos pra mim).
Teria como o amigo postar o assunto aqui?
Pela atenção, obrigado!
O link nao esta funcionando (pelo menos pra mim).
Teria como o amigo postar o assunto aqui?
Pela atenção, obrigado!
Re: Funcoes externas
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:
mas ao compilar da o erro:
O q estou errando ?
Grato e Sucesso!!! :)Pos
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 ENDDUMPCó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. Grato e Sucesso!!! :)Pos
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
-
TerraSoftware
- Usuário Nível 3

- Mensagens: 353
- Registrado em: 28 Jul 2004 13:14
- Localização: Cianorte-PR
- Contato:
Re: Funcoes externas
Caro colega, tambem tive este problema. A funcao correta é assim:
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.
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
-
TerraSoftware
- Usuário Nível 3

- Mensagens: 353
- Registrado em: 28 Jul 2004 13:14
- Localização: Cianorte-PR
- Contato:
Funcoes externas
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
"Finalizando Aplicativo Windows"
Obrigado a todos que ajudaram até aqui.
Se algum Moderador puder travar este post, melhor.
por Pablo César: Mensagem reditada para inserir o link em questão
Re: Funcoes externas
Ok deu certo... grato...
Sucesso a tds!!!!
:)Pos
Sucesso a tds!!!!
:)Pos
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.
“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”.
Até 2017 Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL
Novos Projetos:
Desktop Visual Windev Desktop
Celular Android/iOS Windev Mobile
WEB Windev Web
Sejamos gratos a Deus.