noobdelphi5
19-01-2016, 01:42:39
Buenas Tardes,
Uso Delphi 7 y mi servicio se usará en win XP, vista, 7 y 8.
Tengo un problema con este procedure sirve perfectamente si lo corro con un botón, pero al momento de correrlo como un servicio de windows me abre el cmd pero no borra la unidad, ni inserta la credencial de la unidad de red.
A continuación pegó mi código:
procedure loginRed(cmdUnidad, cmdusuario, cmdPass, cmdRuta, cmdVentana: String; cmdTiempo: Integer; cmdError: Boolean);
var
conectar: String;
opcion: Cardinal;
begin
opcion:=SW_HIDE;
case AnsiIndexStr(cmdVentana,['oculta', 'visible']) of
0 : opcion:=SW_HIDE;
1 : opcion:=SW_SHOW;
end;
conectar:='net use '+cmdUnidad+' '+cmdRuta+' /user:'+cmdUsuario+' '+cmdpass;
WinExec(PChar('net use '+cmdUnidad+' /del /yes'), opcion);
sleep(cmdTiempo);
if cmdError=True Then
begin
ShowMessage(SysErrorMessage(GetLastError));
end;
WinExec(PChar(conectar), opcion);
sleep(cmdTiempo);
if cmdError=True Then
begin
ShowMessage(SysErrorMessage(GetLastError));
end;
end;
¿Es posible hacer esto cómo servicio?, Necesito su ayuda, ya lo intente sigo sin resultados.
Otra pregunta, ¿Para atrapar la pantalla de cmd como le puedo hacer?, porque SysErrorMessage(GetLastError) no arroja el error al no poder conectar a la unidad de red, solo aparece "La operación se ha completado correctamente".
Uso Delphi 7 y mi servicio se usará en win XP, vista, 7 y 8.
Tengo un problema con este procedure sirve perfectamente si lo corro con un botón, pero al momento de correrlo como un servicio de windows me abre el cmd pero no borra la unidad, ni inserta la credencial de la unidad de red.
A continuación pegó mi código:
procedure loginRed(cmdUnidad, cmdusuario, cmdPass, cmdRuta, cmdVentana: String; cmdTiempo: Integer; cmdError: Boolean);
var
conectar: String;
opcion: Cardinal;
begin
opcion:=SW_HIDE;
case AnsiIndexStr(cmdVentana,['oculta', 'visible']) of
0 : opcion:=SW_HIDE;
1 : opcion:=SW_SHOW;
end;
conectar:='net use '+cmdUnidad+' '+cmdRuta+' /user:'+cmdUsuario+' '+cmdpass;
WinExec(PChar('net use '+cmdUnidad+' /del /yes'), opcion);
sleep(cmdTiempo);
if cmdError=True Then
begin
ShowMessage(SysErrorMessage(GetLastError));
end;
WinExec(PChar(conectar), opcion);
sleep(cmdTiempo);
if cmdError=True Then
begin
ShowMessage(SysErrorMessage(GetLastError));
end;
end;
¿Es posible hacer esto cómo servicio?, Necesito su ayuda, ya lo intente sigo sin resultados.
Otra pregunta, ¿Para atrapar la pantalla de cmd como le puedo hacer?, porque SysErrorMessage(GetLastError) no arroja el error al no poder conectar a la unidad de red, solo aparece "La operación se ha completado correctamente".