PROBLEMA COM FORM TRANSPARENTE

RATOPD9 20/10/2009 15:42:07
#325815
gente, preciso fazer um mini programa que fique qse todo transparente
ja pesquisei isso no vbmania, encontrei e consegui faze-lo
mas o problema, é que quando estou usando ele junto com o jogo
ele simplismente some, não fecha (fica no gerenciador de tarefas) mas fica todo invisivel.

encontrei um exemplo de como seria este programa..

http://rapidshare.com/files/295613966/transparente.rar.html


é um programa no idima coreano e pra ele funcionar, precisa ter esse VB6KO.dll (esta junto com o programa) na pasta system32
no caso, a unica junção que eu queria é a do 1° do lado esquero do programa (este programa tem 3 funções)

este programa coreno eu consigo usar junto com o jogo sem problema, ele não fecha.

MICROSCHEME 20/10/2009 15:56:30
#325818

Cara.

Se o problema for o VB6KO.dll, eu dei uma olhada no google e tem vários sites com download grátis; escolhe um, baixa
e vê se resolve.

Este é um deles:

http://www.dlldump.com/download-dll-files_new.php/dllfiles/V/VB6KO.DLL/6.0.89.88/download.html

. . .
RATOPD9 20/10/2009 16:16:24
#325826
MICROSCHEME

o problema não é o VB6KO.dll
eu soh citei ele, pq este programa coreano utiliza ele

o problema é esse aqui (no meu programa)..

é que quando estou usando ele junto com o jogo
ele simplismente some


e com programa coreano que postei como um exemplo que usa esse VB6KO.dll não acontece esse problema, entedeu?
MARCELO.TREZE 20/10/2009 17:19:55
#325843
Resposta escolhida
tenta este código de transparencia

use o exemplo pra testar
RATOPD9 20/10/2009 21:56:23
#325878
MARCELO-TREZE

este seu exemplo funciona, mas esqueci de resaltar no meu topico que o programa (ou a janela transparente) teria que ficar sempre em primeiro plano (sempre acima das outras janelas abertas)
então peguei o seu exemplo e adicionei o seguinte codigo..

no form que vai ficar transparente
Private Sub Form_Load()
Call PutWindowOnTop(Me)
End Sub


e adicionei um modulo com o seguinte codigo..
 Private Declare Function SetWindowLong Lib [Ô]user32[Ô] Alias [Ô]SetWindowLongA[Ô] (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function Layer Lib [Ô]user32[Ô] Alias [Ô]SetLayeredWindowAttributes[Ô] (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Declare Function SetWindowPos Lib [Ô]user32[Ô] _
(ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal Y As Long, _
ByVal Cx As Long, ByVal Cy As Long, ByVal wFlags As Long) As Long


Const HWND_TOPMOST = -1
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1

Public Function PutWindowOnTop(pFrm As Form)
Dim lngWindowPosition As Long

lngWindowPosition = SetWindowPos(pFrm.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)

End Function

[ô]Efeito Alpha Blend Com apenas 4 linhas de código
[ô]Autor:Everest
Public Function SetLayered(hWnd As Long, Volume As Long)
SetWindowLong hWnd, (-20), &H80000: Layer hWnd, 0, CByte(Volume), &H2
End Function


depois de adicionar este codigo pra ficar sempre em 1° plano, ele fecha quando tento usar no jogo, detalhe é q
esse programa coreano, fica sempre em 1° plano, transparente e não fecha.

tah meio complicado
MARCELO.TREZE 20/10/2009 21:58:20
#325879
tentou outro código para manter o form em primeiro plano
MARCELO.TREZE 20/10/2009 22:03:21
#325881
veja este

Option Explicit
Public Declare Function SetWindowPos Lib [Ô]user32[Ô] _
(ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, _
ByVal Y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long

Public Sub Lock_On_Top(Frm)
SetWindowPos Frm.hwnd, -1, 0, 0, 0, 0, 3
End Sub

Public Sub UNLOCK_ON_TOP(Frm)
SetWindowPos Frm.hwnd, -2, 0, 0, 0, 0, 3
End Sub


agora no form pricipal coloque no evento resize

Private Sub Form_Resize()
Lock_On_Top Me
End Sub


tente este código simples para manter o form sempre ontop
RATOPD9 20/10/2009 23:14:51
#325894
MARCELO-TREZE tentei esse codigo que voce postou, funciona normal mas quando executo o programa junto com o jogo
o form transparente e sempre em 1° plano, desaparece depois de uns 3 segundos.

creio eu que por ser um jogo online, seja o anti-xiter que o faz sumir, mas nesse programa coreano (que faz a função que eu queria)
ele não desabilita nada do jogo nem seu anti-xiter, e isso, em qualquer jogo online.

só não sei pq ele funciona perfeito

só para complementar.
quando crio um programa somente com a função transparente ou um outro somente com a função sempre em 1° plano, o jogo tb não fecha, o problema é quando crio 1 unico programa com essas duas funções, ai o jogo ja não aceita -.-
Tópico encerrado , respostas não são mais permitidas