Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-06-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Red face Amigo

Hola, tengo un problemita con la libreria WevView2Loader_xXX.dll,
Según este manual, baje los instaladores de ambas plataformas x32, x64 pero me dice que YA están instaladas en mi sistema.
Responder Con Cita
  #2  
Antiguo 28-06-2024
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 321
Poder: 4
pgranados Va por buen camino
Para eso yo utilizo este codigo:

Código Delphi [-]
if EsWindows64Bits then // Si Windows es 64 bits vamos a mandar las DLL
begin // Si Windows es de 64 bits copio y pego las dos DLL en System 32
    if not FileExists('C:\Windows\SysWOW64\WebView2Loader_x86.dll') then
    begin
      if not FileExists(psRutaRaizServer+'WebView2Loader_x86.dll') then
        exit;

      Destino := 'C:\Windows\SysWOW64';

      ZeroMemory(@FO, SizeOf(FO));
      FO.Wnd := 0;
      FO.wFunc := FO_COPY;
      FO.pFrom := PChar(psRutaRaizServer+'WebView2Loader_x86.dll' + #0);
      FO.pTo := PChar(Destino + #0);
      FO.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;

      if SHFileOperation(FO) <> 0 then
        Application.MessageBox(PChar('Hubo un error con WebView2Loader_x86.dll'), PChar(csNombrePrograma),MB_OK + MB_ICONERROR)
      else
        lbTerminar:= true;
    end;

    if not FileExists('C:\Windows\SysWOW64\WebView2Loader_x64.dll') then
    begin
      if not FileExists(psRutaRaizServer+'WebView2Loader_x64.dll') then
        exit;

      Destino := 'C:\Windows\SysWOW64';

      ZeroMemory(@FO, SizeOf(FO));
      FO.Wnd := 0;
      FO.wFunc := FO_COPY;
      FO.pFrom := PChar(psRutaRaizServer+'WebView2Loader_x64.dll' + #0);
      FO.pTo := PChar(Destino + #0);
      FO.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;

      if SHFileOperation(FO) <> 0 then
        Application.MessageBox(PChar('Hubo un error con WebView2Loader_x64.dll'), PChar(csNombrePrograma),MB_OK + MB_ICONERROR)
      else
        lbTerminar:= true;
   end;
end;

if lbTerminar = true then
begin
    Application.MessageBox(PChar('Al cerrar este mensaje se cerrará el sistema. al volver a entrar se terminarán de instalar los archivos requeridos para el correcto funcionamiento de 
    este.'), PChar(csNombrePrograma),MB_OK + MB_ICONWARNING);
    // Aqui cerramos el programa
end;
Responder Con Cita
  #3  
Antiguo 28-06-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Red face

Cita:
Empezado por pgranados Ver Mensaje
Para eso yo utilizo este codigo:

Código Delphi [-]
if EsWindows64Bits then // Si Windows es 64 bits vamos a mandar las DLL
begin // Si Windows es de 64 bits copio y pego las dos DLL en System 32
    if not FileExists('C:\Windows\SysWOW64\WebView2Loader_x86.dll') then
    begin
      if not FileExists(psRutaRaizServer+'WebView2Loader_x86.dll') then
        exit;

      Destino := 'C:\Windows\SysWOW64';

      ZeroMemory(@FO, SizeOf(FO));
      FO.Wnd := 0;
      FO.wFunc := FO_COPY;
      FO.pFrom := PChar(psRutaRaizServer+'WebView2Loader_x86.dll' + #0);
      FO.pTo := PChar(Destino + #0);
      FO.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;

      if SHFileOperation(FO) <> 0 then
        Application.MessageBox(PChar('Hubo un error con WebView2Loader_x86.dll'), PChar(csNombrePrograma),MB_OK + MB_ICONERROR)
      else
        lbTerminar:= true;
    end;

    if not FileExists('C:\Windows\SysWOW64\WebView2Loader_x64.dll') then
    begin
      if not FileExists(psRutaRaizServer+'WebView2Loader_x64.dll') then
        exit;

      Destino := 'C:\Windows\SysWOW64';

      ZeroMemory(@FO, SizeOf(FO));
      FO.Wnd := 0;
      FO.wFunc := FO_COPY;
      FO.pFrom := PChar(psRutaRaizServer+'WebView2Loader_x64.dll' + #0);
      FO.pTo := PChar(Destino + #0);
      FO.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;

      if SHFileOperation(FO) <> 0 then
        Application.MessageBox(PChar('Hubo un error con WebView2Loader_x64.dll'), PChar(csNombrePrograma),MB_OK + MB_ICONERROR)
      else
        lbTerminar:= true;
   end;
end;

if lbTerminar = true then
begin
    Application.MessageBox(PChar('Al cerrar este mensaje se cerrará el sistema. al volver a entrar se terminarán de instalar los archivos requeridos para el correcto funcionamiento de 
    este.'), PChar(csNombrePrograma),MB_OK + MB_ICONWARNING);
    // Aqui cerramos el programa
end;
Brother, el objeto puntero FO, como se define
Responder Con Cita
  #4  
Antiguo 28-06-2024
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 321
Poder: 4
pgranados Va por buen camino
Código Delphi [-]
FO: TSHFileOpStruct;
Responder Con Cita
  #5  
Antiguo 28-06-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Red face modificaciones a tu codigo

Amigo hice algunas cosas en tu codigo:

Código Delphi [-]

function EsWindows64Bits: Boolean;
type
  TIsWow64Process = function(Handle: THandle; var Res: BOOL): BOOL; stdcall;
var
  IsWow64Result: BOOL;
  IsWow64Process: TIsWow64Process;
begin
  Result := False;
  IsWow64Process := GetProcAddress(GetModuleHandle('kernel32.dll'), 'IsWow64Process');
  if Assigned(IsWow64Process) then
  begin
    if IsWow64Process(GetCurrentProcess, IsWow64Result) then
    begin
      Result := IsWow64Result;
    end;
  end;
end;

procedure TfrmPrincipal.Button1Click(Sender: TObject);
var
  rutaSistema, rutaFileLocal, Destino:string;
  FO:TSHFileOpStruct;
  lbTerminar:Boolean;
begin
  rutaFileLocal:=ExtractFilePath(Application.ExeName);
  if EsWindows64Bits then
  begin // Si Windows es de 64 bits copio y pego las dos DLL en System 32
    rutaSistema:='C:\Windows\SysWOW64\';

    if not FileExists(rutaSistema + 'WebView2Loader_x64.dll') then
    begin
      Destino := 'C:\Windows\SysWOW64';

      ZeroMemory(@FO, SizeOf(FO));
      FO.Wnd := 0;
      FO.wFunc := FO_COPY;
      FO.pFrom := PChar(rutaFileLocal+'Files\WebView2Loader_x64.dll' + #0);
      FO.pTo := PChar(Destino + #0);
      FO.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;

      if SHFileOperation(FO) <> 0 then
        Application.MessageBox(PChar('Hubo un error con WebView2Loader_x64.dll'), PChar('OK'),MB_OK + MB_ICONERROR)
      else
        lbTerminar:=True;
    end;
  end
  else // 32 Bits
  begin
    rutaSistema:='C:\Windows\System32\';

    if not FileExists(rutaSistema+'WebView2Loader_x86.dll') then
    begin
      Destino := 'C:\Windows\System32';

      ZeroMemory(@FO, SizeOf(FO));
      FO.Wnd := 0;
      FO.wFunc := FO_COPY;
      FO.pFrom := PChar(rutaFileLocal+'Files\WebView2Loader_x86.dll' + #0);
      FO.pTo := PChar(Destino + #0);
      FO.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR;

      if SHFileOperation(FO) <> 0 then
        Application.MessageBox(PChar('Hubo un error con WebView2Loader_x86.dll'), PChar('Ok'),MB_OK + MB_ICONERROR)
      else
        lbTerminar:= true;
     end;
  end;
end;

Última edición por darkamerico fecha: 28-06-2024 a las 17:20:06.
Responder Con Cita
  #6  
Antiguo 28-06-2024
darkamerico darkamerico is offline
Miembro
 
Registrado: dic 2010
Posts: 273
Poder: 16
darkamerico Va por buen camino
Red face Ayuda

Amigos, aquí comparto el proyecto donde intento recuperar el PDF en base64 desde la BD y al hacer clic en una grilla se debe visualizar el PDF en el componente TAdvWebBrowser. El archivo .BAK esta ahí también

Lo que deseo evitar es que el PDF de la BD se grabe en archivos temporales en el disco.
No es indispensable usar un componente TAdvWebBrowser, con que se visualice el documento con ShellExecute, suficiente.

Proyecto:
Bajar (800k)

Atte,
Americo Torres

Última edición por darkamerico fecha: 28-06-2024 a las 21:12:07.
Responder Con Cita
  #7  
Antiguo 29-06-2024
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 321
Poder: 4
pgranados Va por buen camino
Cita:
Empezado por darkamerico Ver Mensaje
Lo que deseo evitar es que el PDF de la BD se grabe en archivos temporales en el disco.
Aqui ya no entendi, lo que quieres es guardar un base64 en la base de datos?

Para eso en Firebird 2.5 utilizas el tipo de campo tipo blob no un campo tipo string
Responder Con Cita
  #8  
Antiguo 29-06-2024
Avatar de pgranados
pgranados pgranados is offline
Miembro
 
Registrado: sep 2022
Ubicación: México
Posts: 321
Poder: 4
pgranados Va por buen camino
Cita:
Empezado por pgranados Ver Mensaje
Aqui ya no entendi, lo que quieres es guardar un base64 en la base de datos?

Para eso en Firebird 2.5 utilizas el tipo de campo tipo blob no un campo tipo string
Es mas, directamente guardas el PDF en el BLOB y lo recuperas con un TStream
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Base64 IdDecoderMIME a zip GustavoCruz Internet 9 10-11-2020 07:57:12
Cargar una Imagen base64 en un Timage darkamerico Gráficos 7 25-10-2020 01:04:29
Cargar esta web en un Twebbrowser problemas user agent cocute Varios 8 02-11-2014 17:57:19
Mostrar imagen que viene en Base64 jars Gráficos 7 25-06-2012 09:42:57
Cargar datos formulario web en Twebbrowser Rockin Internet 8 23-02-2011 12:50:34


La franja horaria es GMT +2. Ahora son las 02:43:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi