Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Karcrack

#1061
SkyWeb, ya tienes la solucion para la proxima: No compartas ningun codigo aqui. La gente no aprecia tu trabajo, sea grande o pequeño...
#1062
Cita de: Sm0kes en 16 Marzo 2010, 17:49 PM
hey genial Karcrack lo tomare como alternativa vere que otros metodos habra me has motivado xD... Salu2 y thankz ;)
Hoy mismo antes de empezar con esto estaba pensando formas mas astutas :P Se me ha ocurrido, trabajar con Named Pipes, o trabajar con WM_USER... pero todo esto necesita bastante mas codigo.. y a mi me gustan las cosas minimalistas :)


Gracias a todos, me alegro que os haya gustado :D
#1063
Puff... Te deseo suerte, a ver si algun alma caritativa te hace el trabajo... pero aqui normalmente no se hacen tareas...
#1064
Y donde esta el codigo??
#1065
Cita de: Hasseds en 16 Marzo 2010, 16:45 PM
If App.PrevInstance = True Or App.EXEName <> "Proyecto1" Then End

como va a abrir Proyecto2 si no es = a Proyecto1
Si, si, mientras uses esa condicion al cambiar el nombre se cerrará... pero te digo que no es buena idea, porque si cambias el nombre al EXE original... es decir, cambias el nombre al "Proyecto1" por incluso "PROYECTO1" dejara de ir.... Por eso no es buena idea :xD O si lo pusieses en un AutoExtraible del WinRar tampoco iria, porque a no ser que digas lo contrario el Winrar pone nombres aleatorios :D
#1066
Cita de: Hasseds en 16 Marzo 2010, 16:33 PM
Como que no sirve, si renombras (en la misma carpeta o ya está corriendo  no hay segunda instancia
PD: y app.path en el caso que se renombre en otra carpeta
1- No es buena idea 'hardcodear' un nombre (de carpeta o fichero, da igual), ya que eso es facilmente modificable...
2- Prueba a usar el metodo de app.PrevInstance haciendo esto:
Compila el ejecutable como "Proyecto1.exe" ejecutalo, ira sin problemas... copia el "Proyecto1.exe" a "Proyecto2.exe" y abrelo... veras que hay dos instancias de la misma aplicacion...
#1067
Cita de: Hasseds en 16 Marzo 2010, 16:22 PM
If App.PrevInstance = True Or App.EXEName <> "Project1" Then End

:silbar:

Creo que no has leido la cita que he hecho a MadAntrax...
Si se renombra el fichero y se vuelve a ejecutar el proceso eso no sirve para nada :)


Cita de: ssccaann43 en 16 Marzo 2010, 16:24 PM
Jajaja XD...

Karcrack como dice cobein... Sos un capo...! Me gustó este code...! ::D
Gracias :-[ :xD :xD
#1068
Como ya he dicho NO creo que sea un C&P... Solo es un API, no hay mas formas de llamar a un API...

Entonces esto tambien seria un C&P? Porque solo uso un API...
#1069
Ya puse una alternativa hace un tiempo:
http://foro.elhacker.net/programacion_vb/srcmaltmutexbas_alternativa_a_createmutex-t243771.0.html

Pues aqui va otra trabajando con Semaforos :P
Código (vb) [Seleccionar]
Option Explicit
'KERNEL32
Private Declare Function CreateSemaphoreW Lib "kernel32.dll" (ByVal lpSemaphoreAttributes As Long, ByVal lInitialCount As Long, ByVal lMaximumCount As Long, ByVal lpName As Long) As Long

Private Const ERROR_ALREADY_EXISTS  As Long = 183&

Public Function bWasIOpened(ByVal lpName As String) As Boolean
    bWasIOpened = (CreateSemaphoreW(0&, 0&, 1&, StrPtr(lpName)) > 0) And (Err.LastDllError = ERROR_ALREADY_EXISTS)
End Function

Minimalista, como a mi me gusta >:D

Bueno, para que no sepa para que sirve esto lo explico, es bastante facil. Sirve para que no hayan dos instancias de nuestra aplicacion ejecutandose simultaneamente...
Una mejor explicacion de nuestro amigo MadAntrax :P
Cita de: ||MadAntrax|| en 19 Mayo 2007, 17:33 PM
sirve para controlar que nuestra aplicación no sea ejecutada 2 veces en un mismo equipo. Algunos pensareis que eso ya se puede hacer con

Código (vb) [Seleccionar]
If App.PrevInstance = True Then End

pero eso no es cierto... si nuestra aplicación se copia en System32 como: programa1.exe y programa2.exe... el usuario podrá ejecutar el programa1.exe y el programa2.exe simultáneamente! Eso puede suponer un problema en el caso de estar programando un troyano o un keylogger (donde lo importante es solo tener una instancia de nuestro malware a la vez).

Ejemplo de uso del code:
Código (vb) [Seleccionar]
Private Sub Form_Load()
    If bWasIOpened("Cualquier_Cosa") = True Then End
End Sub


Nota:Probar solo compilado.

Saludos :D
#1070
Cita de: ssccaann43 en 16 Marzo 2010, 13:43 PM
Esto lo habras sacado de acá:http://www.runelocus.com/forums/archive/index.php/t-25306.html

Y creo que si, la gran mayoria de las variables estan iguales...

:silbar:
Que malo eres >:D :xD

Si solo es un API como quieres que se haga de otra forma? Que cargue el type con dos Currencys? Tal que asi:
Código (vb) [Seleccionar]
'OLEAUT32
Private Declare Function OleLoadPicturePath Lib "OLEAUT32" (ByVal szURLorPath As Long, ByVal punkCaller As Long, ByVal dwReserved As Long, ByVal clrReserved As OLE_COLOR, ByRef riid As GUID, ByRef ppvRet As IPicture) As Long

Private Type GUID
   cData1  As Currency
   cData2  As Currency
End Type

Public Function GetImage(hURLorPath As String, Optional TransparentColor As OLE_COLOR = vbWhite) As StdPicture
   Dim uID     As GUID
   
   With uID ' // StdPicture GUID {7BF80980-BF32-101A-8BBB-00AA00300CAB}
       .cData1 = 116045007755044.6976@
       .cData2 = -612146501409303.8709@
   End With
   
   Call OleLoadPicturePath(StrPtr(hURLorPath), 0&, 0&, TransparentColor, uID, GetImage)
End Function


No hay mucho que hacer en la llamada a un API, asi que no seas malo :P