¿Sin hardcodear? jajaja, ¿Eso está en el diccionario? ¿Qué significa? Es igual, lo supongo
"sin hardcodear" otra forma que hay de obtener el /Program files/ del sistema que tenía por ahí guardada y que estaba buscando es esta:
Private Sub Command1_Click()
Dim X As Variant
Dim Y As Variant
Set X = CreateObject("Wscript.Shell")
Set Y = X.Environment("Process")
Print Y("PROGRAMFILES")
End Sub
En cuanto a lo que has posteado Miseryk , lo de GetModuleHandle no lo he probado y no se muy bien como va. He probado lo siguiente:
Dim hModule%, Buffer$, Length%, Msg$
hModule% = GetModuleHandle("notepad.exe")
Buffer$ = Space$(255)
Length% = GetModuleFileName(hModule%, Buffer$, Len(Buffer$))
Buffer$ = Left$(Buffer$, Length%)
Msg$ = Buffer$
Msgbox Msg$
:
Pero me da el directorio de VB6.EXE y no el del notepad.exe en este caso, ni siquiera estando en ejecución. He probado sustituyendo hModule% por el hande de la aplicación (en ejecución). Pero nada, que tampoco.
Al usar NULL supongo que tu vas por C++ y no VB, ya que NULL no es válido en VB6, en sustitución sería
vbNullBueno, como en internet son todos unos perdedores de *****, me imaginé que el path debía estar adentro de cada EXE, y por lo que pude ver en todos los programas abiertos en W7 32 bits, encontré un addres que contiene el path el cual es: (FUNCIONA CON EL 90% de los programas como OPERA, WINAMP, VB6, la ***** del McAfee, etc), también por lo que pude ver es que si abrís un proyecto de VB6, te toma el path de donde se abrió ese proyecto, muy loco, pero sinó vá a mostrar lo que vos andás buscando.
kernel32.dll+C6320 (UNICODE)
Agregala al cheatengine y andá attachando cada EXE y vás a ver que se carga el path de ese EXE. (Y)
PD: en algunos EXEs del systema no toma el path, pero funcionó con Winlogon y demás.
PD2: si el programa está hecho con una dll en especial, también hay un path con el que funciona el cual es:
msvcrt.dll+A3878 (MULTIBYTE)
PD3: el que quiera ayudar es bienvenido xDDDD la verdad que no me lo puse a ver bien, habría que investigar como funciona el taskmgr y copiar su funcionalidad.
Saludos.