Desde el ide muestra el MSGBOX pero no funciona la funcion y cuando genero el exe y llamo la dll me da el erro del titulo le dejo el code:
Ojala puedan ayudarme
Proceso.exe
Private Declare Function DllMain Lib "Loader.dll" () As String
Private Sub Command1_Click()
DllMain
End Sub
Loader.dll
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Funciòn APi para buscar Ventanas de Windows
Public Declare Function FindWindow _
Lib "user32" _
Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
'Para finalizar dicha ventana
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Public Sub Comprobar()
Dim clase As String
clase = ThunderRT6FormDC
Dim ret As Long
' busca la ventana y retorna el Handle
ret = FindWindow(clase, "MuPaysandú V 1.0.59")
'si retorna distinto _
de 0 es porque la encontró
If ret <> 0 Then
' Finaliza la ventana
Log ("Launcher cerrado corectamente con el HWD " & ret)
SendMessage ret, "&H112", "&HF060&", ByVal 0
Else
Log ("Launcher no encontrado.")
ret = FindWindow("MU", vbNullString)
If ret <> 0 Then
SendMessage ret, "&H112", "&HF060&", ByVal 0
Log ("Procediendo a cerrar el Cliente.")
Log ("Abriendo Launcher.")
ShellExecute ret, "Open", App.Path & "\MU.exe", vbNullString, "0", "1"
Else
Log ("MuPaysandu No encontrado.")
End If
End If
End Sub
Public Sub Log(Razon As String)
Open App.Path & "\log.txt" For Append As 1
Print #1, "[" & Date & "] " & Razon
Close #1
End Sub
Public Function DllMain() As String
MsgBox "DLL CARGADA"
Comprobar
End Function
que es lo que no te funciona?.
SendMessage ret, WM_SYSCOMMAND, SC_CLOSE, ByVal 0
cierra la ventana pero no mata el proceso si la ventana no es la unica en ejecucion.
seguro que este es el nombre de clase ThunderRT6FormDC mira que si la aplicacion esta en ide es otro el classname.
Saludos.
Si el cass esta bien ya lo revise
el program cierra la primera ventana y lanza el proceso pero si inicio el proceso solo y la primera ventana no esta preceste el proceso actual debrei acerrarse y abier el MU.exe
Solo una acotación, la clase de los formularios (ventanas) echos en VB se llaman "ThunderFormDC" si se ejecutan desde el IDE, pero esta clase cambia por "ThunderRT6FormDC" si se ejecuta desde el exe compilado.
Lo dices tan seguro pero no es asi sucede que si ves la class de la vantana de el exe compilado el cual se busca es la que yo puse aqui un a prueba si se dejan de decir eso ya que ese no es el problema.
(http://img51.imageshack.us/img51/8033/dibujoesd.png)
Cita de: LeandroA en 8 Diciembre 2009, 02:52 AM
seguro que este es el nombre de clase ThunderRT6FormDC mira que si la aplicacion esta en ide es otro el classname.
shaggikpo: No estoy diciendo que es tu problema, estoy haciendo una
acotación sobre el tema de la clase del form de vb:
"ThunderFormDC" si se ejecutan desde el IDE,
"ThunderRT6FormDC" si se ejecuta compilado.
Option Explicit
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Sub Form_Load()
Me.AutoRedraw = True: Me.FontBold = True
Dim ClassName As String: ClassName = Space$(255)
Dim ret As Long: ret = GetClassName(Me.hwnd, ClassName, 255)
Me.Print Left$(ClassName, ret)
End Sub
PD: me pareció importante pero perdón si te molestó.