padvak Posted April 9, 2012 at 02:35 AM Report #448166 Posted April 9, 2012 at 02:35 AM Olá caros amigos, estou com uma duvida, atualmente em meu programa ele carrega uma dll importante cujo tem um form nessa dll que fica oculto que possui um titulo X, o que eu queria fazer é impedir que o cara feche o form dessa dll, pensei em injetar uma dll no explorer.exe onde verifica se o form foi fechado, mas alguns anti-virus detectariam como um malware, o que vocês me indicam? obrigado!
nunopicado Posted April 9, 2012 at 08:37 AM Report #448175 Posted April 9, 2012 at 08:37 AM Podes "anular" o menu de sistema da form, e criar o teu próprio. A maneira mais simples é: 1. Definir a propriedade biSystemMenu para False. form1.BorderIcons.biSystemMenu:=False; 2. Criar uma solução (menu, botão, etc.) que permita a janela ser fechada. Esta solução já pode ser controlada por ti, por exemplo só ficar Enabled quando uma determinada tarefa concluir. Advertência: Deves ter muita atenção se optares por este procedimento. Um programa que bloqueia o funcionamento do utilizador indefinidamente (sem que o ponto 2 esteja previsto) pode ser considerado virus, mesmo que os Anti-Virus não o detectem assim, criando potenciais problemas legais a quem o fez. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
padvak Posted April 9, 2012 at 05:31 PM Author Report #448255 Posted April 9, 2012 at 05:31 PM entendo amigo, mas o problema não é que o cara feche, por exemplo o form ele é totalmente oculto, a pessoa não consegue ver, mas pelo titulo do form que está oculto, o cara consegue fecha-lo matando o processo entende? esse form no caso é uma dll que fica dentro do arquivo executavel, o executavel é um programa normal que a pessoa mexe, e essa dll possui um form totalmente oculto entende?
nunopicado Posted April 9, 2012 at 05:57 PM Report #448260 Posted April 9, 2012 at 05:57 PM Ah, agora entendi. Infelizmente nesse caso não posso é ajudar, nunca fiz isso, nem sei como fazer. 👍 "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
padvak Posted April 10, 2012 at 11:41 PM Author Report #448512 Posted April 10, 2012 at 11:41 PM tudo bem meu amigo, sem problemas, vou tentar resolver, se eu conseguir posto aqui, obrigado \õ/
I-NOZex Posted April 11, 2012 at 02:22 PM Report #448599 Posted April 11, 2012 at 02:22 PM Propriedades do form > Events > OnCloseQuery > procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:=false; end; podes é dizer que esse form oculto é uma mdi-child, e um formulario principal visivel será o mdi parent... tenta explicar um pouco melhor, para eu entender realmente o que pretendes ao certo... tambem tava aqui a pensar no uso de threads mas acho que nao é isso que precisas :/ B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
pwseo Posted April 11, 2012 at 11:21 PM Report #448708 Posted April 11, 2012 at 11:21 PM Porque não fazer isso sem Form? Se é para estar oculto, provavelmente não precisas da janela...
M6 Posted April 12, 2012 at 09:14 AM Report #448730 Posted April 12, 2012 at 09:14 AM Pelo que me recordo da API do Windows, podes encontrar o processo da DLL e creio que podes fazer um hook aos eventos da janela. Vê se isto ajuda: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632589(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms644959(v=vs.85).aspx 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar."
padvak Posted April 12, 2012 at 09:47 PM Author Report #448875 Posted April 12, 2012 at 09:47 PM Porque não fazer isso sem Form? Se é para estar oculto, provavelmente não precisas da janela... pedro, por que a dll não funciona algumas funções que em um form normal funcionaria compreendi?
nunopicado Posted April 13, 2012 at 10:49 AM Report #448921 Posted April 13, 2012 at 10:49 AM pedro, por que a dll não funciona algumas funções que em um form normal funcionaria compreendi? Tudo depende do que vais fazer, mas muito provavelmente, se a tal form nunca chega a aparecer, não será necessária, podendo-se fazer o mesmo processo sem ela. Agora, pelo que percebi, o teu problema nem é o fechar da form, mas sim do próprio processo. Possivelmente o TApplictionEvents é capaz de ter algo para isso, mas como te tinha dito, nunca o fiz. "A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!" > Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now