Clarion - Determinar directorio de sistema en Windows

 
Vista:

Determinar directorio de sistema en Windows

Publicado por Montse (12 intervenciones) el 22/06/2005 10:54:07
Hola querría saber cómo puedo sugerir el Directorio de Sistema de Windows, ya que este varía según la versión del sistema operativo que se tiene instalada.

Gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Determinar directorio de sistema en Windows

Publicado por Chaly (126 intervenciones) el 29/06/2005 23:42:09
Eso es con el API de Windows el prototypo de la declaracion es

OMIT('***',_WIDTH32_)
GetWindowsDirectory(*LPSTR, WORD),WORD,PASCAL,RAW
***
COMPILE('***',_WIDTH32_)
GetWindowsDirectory(*LPSTR,UNSIGNED),UNSIGNED,PASCAL,RAW,NAME('GetWindowsDirectoryA')
***

se supone que con eso, mientras lo checo bien prueba con eso, despues te mando la solucion correcta. Yo he hecho pruebas con otras funciones de la api de window y si funcionan asi que esta tambien. Espera mi comentario en unos dias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Determinar directorio de sistema en Windows

Publicado por Charly (126 intervenciones) el 30/06/2005 23:10:59
Prueba lo siguiente:

1.- En las propiedades globales de la aplicacion en cuestion en los embebidos coloca el siguiente codigo:

EMBEBIDO: After Global INCLUDEs
!!Incluir los prototipos para las llamadas API
include('WINAPI.CLW','Equates')

EMBEBIDO: Inside the Global Map
!!Incluir los prototipos para las llamadas API
include('WINAPI.CLW','Prototypes')

2.- Debes tener el archivo WINAPI.CLW en el directorio de la APP a la hora de compilar. Este es el archivo:

SECTION('Equates')
UINT EQUATE(UNSIGNED)
FOURCC EQUATE(LONG)
WCHAR EQUATE(BYTE)
UCHAR EQUATE(BYTE)
CHAR EQUATE(BYTE)
BOOL EQUATE(SIGNED)
BYTE EQUATE(BYTE)
WORD EQUATE(SIGNED)
DWORD EQUATE(ULONG)
HANDLE EQUATE(UNSIGNED)
LPVOID EQUATE(ULONG)
PVOID EQUATE(ULONG)
FLOAT EQUATE(SREAL)
LPSTR EQUATE(CSTRING) !Usage:Pass the Label of the LPSTR
LPCSTR EQUATE(CSTRING) !Usage:Pass the Label of the LPCSTR
MAX_PATH EQUATE(260)
HWND EQUATE(HANDLE)
HINSTANCE EQUATE(HANDLE)
HMODULE EQUATE(HINSTANCE)
HTASK EQUATE(HANDLE)
HDC EQUATE(HANDLE)
WPARAM EQUATE(UINT)
LPARAM EQUATE(LONG)
LRESULT EQUATE(LONG)
LPBOOL EQUATE(ULONG)
LPCVOID EQUATE(ULONG)

HDIOBJ EQUATE(HANDLE)
HCOLORSPACE EQUATE(HANDLE)
HRDVR EQUATE(HANDLE)
HWAVEOUT EQUATE(HANDLE)
HWAVEIN EQUATE(HANDLE)
HACCEL EQUATE(HANDLE)
HBITMAP EQUATE(HANDLE)
HPEN EQUATE(HANDLE)
HWINSTA EQUATE(HANDLE)
HBRUSH EQUATE(HANDLE)
HRGN EQUATE(HANDLE)
HKL EQUATE(HANDLE)
HPALETTE EQUATE(HANDLE)
HFONT EQUATE(HANDLE)
HHOOK EQUATE(HANDLE)
HDRVR EQUATE(HANDLE)
HDWP EQUATE(HANDLE)
HRSRC EQUATE(HANDLE)
HSTR EQUATE(HANDLE)
HCURSOR EQUATE(HANDLE)
HICON EQUATE(HCURSOR)
HGRN EQUATE(HANDLE)
HMENU EQUATE(HANDLE)
SC_HANDLE EQUATE(HANDLE)
HDESK EQUATE(HANDLE)
HENHMETAFILE EQUATE(HANDLE)
HSZ EQUATE(WORD)
HMETAFILE EQUATE(HANDLE)
HMIDIIN EQUATE(HANDLE)
HMIDIOUT EQUATE(HANDLE)
HMMIO EQUATE(HANDLE)
HFILE EQUATE(SIGNED)
LUID EQUATE(LONG)
PLUID EQUATE(LONG)

ANYSIZE_ARRAY EQUATE(1)
PHANDLE EQUATE(HANDLE)
SPHANDLE EQUATE(HANDLE)
LPHANDLE EQUATE(HANDLE)
HGLOBAL EQUATE(HANDLE)
HLOCAL EQUATE(HANDLE)
GLOBALHANDLE EQUATE(HANDLE)
LOCALHANDLE EQUATE(HANDLE)
ATOM EQUATE(UINT)

COLORREF EQUATE(DWORD)
HDDEDATA EQUATE(DWORD)
HCONV EQUATE(DWORD)
HCONVLIST EQUATE(DWORD)
LONGREAL EQUATE(REAL)
DWORDLONG EQUATE(REAL)
WORDLONG EQUATE(REAL)
LARGE_INTEGER EQUATE(LONG)
ULARGE_INTEGER EQUATE(ULONG)
BOOLEAN EQUATE(BYTE)
VERSION EQUATE(UNSIGNED)

!TYPE definitions only--these declarations are used only to
!define other data structures. No memory is allocated for TYPEs!
RECT GROUP,TYPE
left SIGNED
top SIGNED
right SIGNED
bottom SIGNED
END

POINT GROUP,TYPE
X SIGNED
Y SIGNED
END

WINDOWPLACEMENT GROUP,TYPE
length UINT
flags UINT
showCmd UINT
ptMinPosition LIKE(POINT)
ptMaxPosition LIKE(POINT)
rcNormalPosition LIKE(RECT)
END

!"real" data structure based on above TYPE. The following structure
!has memory allocated and is used to hold and pass data.
rcNormalPosition GROUP(Rect) !Inherit from TYPEd group RECT
END

SECTION('Prototypes')
Module('Windows.DLL')
GetParent(HWND),HWND,PASCAL
OMIT('***',_WIDTH32_)
GetClassName(HWND, *LPSTR, SIGNED),SIGNED,PASCAL,RAW
***
COMPILE('***',_WIDTH32_)
GetClassName(HWND,*LPSTR,SIGNED),SIGNED,PASCAL,RAW,NAME('GetClassNameA')
***
OMIT('***',_WIDTH32_)
GetModuleFileName(HINSTANCE, *LPSTR, SIGNED),SIGNED,PASCAL,RAW
***
COMPILE('***',_WIDTH32_)
GetModuleFileName(HINSTANCE,*LPSTR,DWORD),DWORD,PASCAL,RAW,NAME('GetModuleFileNameA')
***
GetWindowPlacement(HWND, *WINDOWPLACEMENT),BOOL,PASCAL,RAW
GetWindowRect(HWND, *RECT),PASCAL,RAW
GetWindowRgn(HWND,HRGN),SIGNED,PASCAL
OMIT('***',_WIDTH32_)
GetWindowsDirectory(*LPSTR, WORD),WORD,PASCAL,RAW
***
COMPILE('***',_WIDTH32_)
GetWindowsDirectory(*LPSTR,UNSIGNED),UNSIGNED,PASCAL,RAW,NAME('GetWindowsDirectoryA')
***
EnumChildWindows(HWND, CBK_EnumFunc, LPARAM),BOOL,PASCAL
OMIT('***',_WIDTH32_)
GetModuleHandle(*LPCSTR),HMODULE,PASCAL,RAW
***
COMPILE('***',_WIDTH32_)
GetModuleHandle(*LPCSTR),HMODULE,PASCAL,RAW,NAME('GetModuleHandleA')
***

End

3.- Declaras una variable con suficiente numero de caracteres por ejemplo:
Loc:Directorio CSTRING(265)

4.- La mandas llamar asi:
GetWindowsDirectory(Loc:Directorio,255)
message(Loc:Directorio)

Y LISTO, pruebalo cualquier duda ya sabes...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No existe una manera más simple.

Publicado por raul (23 intervenciones) el 03/07/2005 08:09:56



HABER, HABER, HABER, mmmm


No existe una manera más simple para realizar eso.

Los 2 unicos directorios utilizados generalmente para la instalacion del OS son
WINDOWS y WINNT.
Lo cual quizas se pueda resolver con unas simples lineas

if exist('c:\winnt') ! si existe esta carpeta se sugiere esa.
ruta_sugerida ='c:\winnt'
else
ruta_sugerida ='c:\windows'
end

! de 500 maquinas que he revizado solo 1 tenia la instalacion del OS en otra ruta.

Haber si les sirve de algo. BYTE

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

corrección

Publicado por raul (23 intervenciones) el 03/07/2005 08:14:07
me comi una letra en las lineas de codigillo sugeridas en mi respuesta anterior

correcto incorrecto

EXISTS EXIST
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:corrección

Publicado por Charly (126 intervenciones) el 04/07/2005 20:41:57
No que yo sepa, si alguien sabe que la diga
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Determinar directorio de sistema en Windows

Publicado por FRANCISCO ESTRADA M (376 intervenciones) el 19/07/2005 00:31:05
MONTSE...

TENGO POR AHI UN TEMPLATE QUE LO HACE Y SI LO QUIERES CON GUSTO TE LO ENVIO.

FRANCISCO ESTRADA M
MEXICO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Determinar directorio de sistema en Windows

Publicado por Montse (12 intervenciones) el 20/07/2005 15:30:43
Uy, hola a todos y gracias, llevo varios días sin conectarme al foro. Ando bastante líada pero tengo que probar lo que me decís, y Francisco ya que me lo ofreces sino fuera mucha molestía te agradecería que me mandarás el templante.

Montse
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Determinar directorio de sistema en Windows

Publicado por FRANCISCO ESTRADA M (376 intervenciones) el 23/07/2005 03:51:50
Montse ....

Te acabo de enviar el template ... ojala te sirva

FEM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar