problema con apis... que puedo hacer?

Iniciado por Belial & Grimoire, 28 Octubre 2007, 00:55 AM

0 Miembros y 1 Visitante están viendo este tema.

Belial & Grimoire

hola

alguien sabe como puedo crear un programa en visual basic.net 2005 con el que pueda utilizar el api de openprocess porke necesito que un programa verifike que ya termino de ejecutar todo antes de cerrarse... y eso lo podia hacer con OpenProcess y GetExitCodeProcess en VB6... pero en visual basic.net me aparece este error...



A call to PInvoke function 'WindowsApplication1
!WindowsApplication1.Form1::OpenProcess'
has unbalanced the stack. This is likely because the
managed PInvoke signature does not match the
unmanaged target signature. Check that the calling
convention and parameters of the PInvoke signature
match the target unmanaged signature.



Y el programa si lo ejecuto normal no tengo problemas, pero cuando lo ejecuto con debugger me aparece ese error...

alguien me puede ayudar... hay alguna manera de hacer esto... o hay alguna otra forma de hacerlo...

espero su respuesta

Y porcierto... lo de taskmanager... solo necesito que no se vea la aplicacion... el proceso, pues es mas dificil al parecer... lo que pasa es que hace tiempo hice un  programa en VB6 y quiero pasarlo a .net... y en ese programa solo ocultaba la aplicacion en taskmanager para esconder el formulario y solo hacer que apareciera cuando lo necesitaba... y antes lo hacia facilmente con app.taskvisible = false... pero con .net no encuentro la forma... alguien sabe?


gracias  ;D
.                                 

Hendrix

Quieres que tu programa detecte si otro programa esta ejecutandose y que tu programa continue al cerrarse el otro??? Si es asi utiliza WaitForSingleObject

Otra cosa, ese error se produce al debugguear tu programa solamente???  :-\ :-\
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

Belial & Grimoire

#2
hola

no... lo que pasa.. es que queria que antes de cerrar mi propio programa... en "closing" ejecutar un "shell" pero si intentara ejecutar varias cosas o varios shell antes de cerrarse... el programa no lo hace porke se cierra antes de acabar... y lo que keria era que si se cerraba el programa esperar a que se termianara de ejecutar todo lo que tendria en "closing" del formulario... y cuando terminara entonces que se cerrara... y antes se hacia con esa api... pero siempre que intento colocar apis me aparece ese error... y no se si este bien dejarlo asi... ese error puede kitarse de alguna manera... o siempre estara ahi... hasta que lo ejecute sin debugger...

pero alguien sabe como?

y por cierto... ese ejemplo que me diste se ve interesante... no lo habia visto... gracias

espero alguna respuesta por taskvisible...

nos vemos

;D
.                                 

gusman

Buenas.

Mira en System.Diagnostics.Process, puedes enumerar todos los procesos abiertos, acceder a cada uno por ID o nombre, cerrarlos y guarrearlos de millones de formas  ;D.

De todas formas, ese error que estás poniendo tiene pinta de ser porque no has definido correctamente la llamada al API, el tipo de valor devuelto por el API no es el mismo que el definido en tu llamada a esta (recuerda que en VB6 los long's son de 32 bits, y en .net son de 64 y este tipo de cosillas).

Un saludo
No está muerto todo lo que yace y con extraños evos hasta la misma muerte puede morir.