Tenho um programa ainda em andamento que captura screens, janelas ativas etc...
Só que ele é meio instável.
Quando abro e mando capturar em qualquer condição funciona bem, mas quando minimizo e tento capturar, com a tecla print, as vezes captura as vezes não.
Alguém poderia dar uma olhada nos códigos e ver o que pode estar causando a instabilidade.
A tecla está registrada e aparece da seguinte maneira:
procedure TfrmPrincipal.WMHotKey (var Msg : TWMHotKey);
begin
if Msg.HotKey = 500 then
begin
{== Habilita a tecla Print Screen ==}
//Se não colocar cria um looping
UnRegisterHotkey( Handle, 500 );
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE);
If reg.ReadString('Capturar')= 'A tela toda' then
begin
Clipboard.Clear;//Se não colocar dá erro
Keybd_Event(VK_Snapshot,0, 0, 0);
reg.CloseKey;
{== Desabilita a tecla Print Screen ==}
RegisterHotkey( Handle, 500, 0, VK_SNAPSHOT );
end
Else If reg.ReadString('Capturar')= 'A janela ativa' then
begin
Clipboard.Clear;//Se não colocar dá erro
Keybd_Event(VK_Snapshot,1, 0, 0);
reg.CloseKey;
{== Desabilita a tecla Print Screen ==}
RegisterHotkey( Handle, 500, 0, VK_SNAPSHOT );
end
Else If reg.ReadString('Capturar')= 'Parte da Tela' then
begin
reg.CloseKey;
TimerParteDaTela.Enabled:= True;
end;
Timer1.Enabled:=True;//Aciona a captura
end;
end;
Não entendo porque não pode ficar
procedure TfrmPrincipal.WMHotKey (var Msg : TWMHotKey);
begin
if Msg.HotKey = 500 then
begin
reg.RootKey:=HKEY_LOCAL_MACHINE;
reg.OpenKey('SOFTWARE\NOBRE INFORMÁTICA\FLASH',FALSE);
If reg.ReadString('Capturar')= 'A tela toda' then
begin
Clipboard.Clear;//Se não colocar dá erro
Keybd_Event(VK_Snapshot,0, 0, 0);
reg.CloseKey;
end
Else If reg.ReadString('Capturar')= 'A janela ativa' then
begin
Clipboard.Clear;//Se não colocar dá erro
Keybd_Event(VK_Snapshot,1, 0, 0);
reg.CloseKey;
end
Else If reg.ReadString('Capturar')= 'Parte da Tela' then
begin
reg.CloseKey;
TimerParteDaTela.Enabled:= True;
end;
Timer1.Enabled:=True;//Aciona a captura
end;
end;
Apesar de já ter registrado no oncreate, se tirar:
{== Habilita a tecla Print Screen ==}
//Se não colocar cria um looping
UnRegisterHotkey( Handle, 500 );
{== Desabilita a tecla Print Screen ==}
RegisterHotkey( Handle, 500, 0, VK_SNAPSHOT );
O programa entra em looping.
Alguém tem alguma idéia do que estou fazendo de errado?
Ao minimizar as vezes funciona as vezes não.
Para minimizar estou usando o seguinte código:
procedure TfrmPrincipal.WMSysCommand(var Msg: TWMSysCommand);
Var
H : HWnd;
begin
inherited;
if (Msg.CmdType = SC_MINIMIZE) then
begin
If reg.ReadString('Timer')='Sim' then
begin
frmConfig.cmdPararCaptura.ShowHint:= True;
frmConfig.cmdPararCaptura.Enabled:= True;
frmConfig.TimerCaptura.Interval:= 60000*reg.ReadInteger('Segundos');
frmConfig.TimerCaptura.Enabled:= True;
end;
//O código abaixo esconde a aplicação da barra
// de tarefas.
H := FindWindow(Nil,'FLASH');
If H <> 0 then ShowWindow(H,SW_HIDE);
frmPrincipal.Hide;
frmPrincipal.RxTrayIcon1.Active := True;
{== Desabilita a tecla Print Screen ==}
RegisterHotkey( Handle, 500, 0, VK_SNAPSHOT );
end;
if (Msg.CmdType = SC_CLOSE) then
begin
Application.Terminate;
end;
end;
Pergunta
Paulo Nobre
Tenho um programa ainda em andamento que captura screens, janelas ativas etc...
Só que ele é meio instável.
Quando abro e mando capturar em qualquer condição funciona bem, mas quando minimizo e tento capturar, com a tecla print, as vezes captura as vezes não.
Alguém poderia dar uma olhada nos códigos e ver o que pode estar causando a instabilidade.
A tecla está registrada e aparece da seguinte maneira:
No OnCreat do Form tenho tenho também Não entendo porque não pode ficar Apesar de já ter registrado no oncreate, se tirar: {== Habilita a tecla Print Screen ==} //Se não colocar cria um looping UnRegisterHotkey( Handle, 500 ); {== Desabilita a tecla Print Screen ==} RegisterHotkey( Handle, 500, 0, VK_SNAPSHOT ); O programa entra em looping. Alguém tem alguma idéia do que estou fazendo de errado? Ao minimizar as vezes funciona as vezes não. Para minimizar estou usando o seguinte código:Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.