Funcoes externas

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: Funcoes externas

Mensagem 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?
[]´s
Alexandre Santos (AlxSts)
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Re: Funcoes externas

Mensagem 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,..."
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Funcoes externas

Mensagem 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
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Re: Funcoes externas

Mensagem 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!
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
lugab
Colaborador
Colaborador
Mensagens: 843
Registrado em: 19 Mai 2009 15:58

Re: Funcoes externas

Mensagem por lugab »

Aprendi muito, nese tpc...

Parabéns a todos
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: Funcoes externas

Mensagem 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
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.
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Re: Funcoes externas

Mensagem 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.
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Funcoes externas

Mensagem 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. :D

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
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: Funcoes externas

Mensagem por fladimir »

Ok deu certo... grato...


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.
Responder