adonias
21-10-2007, 02:04:34
basado en el siguente link.
http://www.clubdelphi.com/foros/showthread.php?t=18335
Resulta que carga la pagina web y si el titulo dice Bienvenido se crea el nuevo desktop, y si dice activo no.
No se porque no crea el nuevo desk, si ya revise el codigo y al parecer esta bien.
Les dejo el codigo para que le hechen un vistazo.
Codigo (http://www.adonias.cl/MainApp.zip)
Y como habeses los proveedores tienen espejos les dejo el codigo:
unit Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB, Menus, FavoritesPopup, ComCtrls, RichEditBrowser; type TMainForm = class(TForm)
EmbeddedWB1: TEmbeddedWB;
procedure EmbeddedWB1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
private LockDesktop: HDesk; procedure ExecuteLockApp;
end;
var MainForm: TMainForm; implementation {$R *.dfm} procedure TMainForm.FormCreate(Sender: TObject);
const Flags = DESKTOP_CREATEWINDOW or DESKTOP_SWITCHDESKTOP;
begin LockDesktop := CreateDesktop('LockDesktop', nil, nil, 0, Flags, nil);
end;
procedure TMainForm.FormShow(Sender: TObject);
begin EmbeddedWB1.Go('http://www.adonias.cl/frich/loader.php');
end;
procedure TMainForm.ExecuteLockApp;
var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; begin
SwitchDesktop(LockDesktop);
FillChar(StartInfo, SizeOf(StartInfo), 0);
StartInfo.cb := SizeOf(StartInfo);
StartInfo.lpDesktop := PChar('LockDesktop');
CreateProcess('LockApp.exe', nil, nil, nil, false, 0, nil, nil, StartInfo, ProcInfo);
SwitchDesktop(LockDesktop);
Close;
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin CanClose := false; end;
procedure TMainForm.EmbeddedWB1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var str : string;
posIp : integer;
posFin : integer;
result : integer;
ip : string;
begin str := EmbeddedWB1.DocumentSource; posIp := pos('', str);
ip := copy(str, posIp+21, posFin - (posIp+21));
// Comparamos strings
result := AnsiCompareStr('ACTIVO', ip);
if result > 0 then ExecuteLockApp; //<- Esto no resulta!
ShowMessage(ip);
end;
end.
Muchas gracias por su ayuda nuevamente amigos
http://www.clubdelphi.com/foros/showthread.php?t=18335
Resulta que carga la pagina web y si el titulo dice Bienvenido se crea el nuevo desktop, y si dice activo no.
No se porque no crea el nuevo desk, si ya revise el codigo y al parecer esta bien.
Les dejo el codigo para que le hechen un vistazo.
Codigo (http://www.adonias.cl/MainApp.zip)
Y como habeses los proveedores tienen espejos les dejo el codigo:
unit Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB, Menus, FavoritesPopup, ComCtrls, RichEditBrowser; type TMainForm = class(TForm)
EmbeddedWB1: TEmbeddedWB;
procedure EmbeddedWB1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
procedure FormShow(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
private LockDesktop: HDesk; procedure ExecuteLockApp;
end;
var MainForm: TMainForm; implementation {$R *.dfm} procedure TMainForm.FormCreate(Sender: TObject);
const Flags = DESKTOP_CREATEWINDOW or DESKTOP_SWITCHDESKTOP;
begin LockDesktop := CreateDesktop('LockDesktop', nil, nil, 0, Flags, nil);
end;
procedure TMainForm.FormShow(Sender: TObject);
begin EmbeddedWB1.Go('http://www.adonias.cl/frich/loader.php');
end;
procedure TMainForm.ExecuteLockApp;
var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; begin
SwitchDesktop(LockDesktop);
FillChar(StartInfo, SizeOf(StartInfo), 0);
StartInfo.cb := SizeOf(StartInfo);
StartInfo.lpDesktop := PChar('LockDesktop');
CreateProcess('LockApp.exe', nil, nil, nil, false, 0, nil, nil, StartInfo, ProcInfo);
SwitchDesktop(LockDesktop);
Close;
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin CanClose := false; end;
procedure TMainForm.EmbeddedWB1NavigateComplete2(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var str : string;
posIp : integer;
posFin : integer;
result : integer;
ip : string;
begin str := EmbeddedWB1.DocumentSource; posIp := pos('', str);
ip := copy(str, posIp+21, posFin - (posIp+21));
// Comparamos strings
result := AnsiCompareStr('ACTIVO', ip);
if result > 0 then ExecuteLockApp; //<- Esto no resulta!
ShowMessage(ip);
end;
end.
Muchas gracias por su ayuda nuevamente amigos