Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 05-06-2006
leonelpereda leonelpereda is offline
Miembro
 
Registrado: may 2006
Posts: 11
Poder: 0
leonelpereda Va por buen camino
Cita:
Empezado por dec
Dices que incluso probaste a traducir el código fuente del ejemplo (en lenguaje C) a Delphi, pero que no logras que te funcione el asunto. Ahora bien, ¿cómo se supone que has traducido el código fuente?
Si de hecho si traduje el codigo de sysinternals a delphi,

Código Delphi [-]
// (c) Alex Konshin mailto:[email protected] 20 jul 2000
program NativeApp;
// PURPOSE: Simple Windows NT/2000 console application that calls Native API functions
{$APPTYPE CONSOLE}
uses
  Windows, SysUtils, ntdll;
var Heap : THANDLE;

procedure NtProcessStartup(Argument : PStartUp_Argument);
var
    CommandLine   : PNtUnicodeString;
    StringBuffer,
    ArgPtr        : PWideChar;
    HelloWorld    : TNtUnicodeString;
    HeapParams    : TRTL_Heap_Definition;
begin
    //
    // Initialize some heap
    //
    FillChar(HeapParams, SizeOf(TRTL_Heap_Definition), 0);
    HeapParams.Length := SizeOf(TRTL_Heap_Definition);
    Heap              := RtlCreateHeap( 2, 0, $100000, $1000, 0, @heapParams );

    //
    // Point at command line
    //
    CommandLine := @(Argument^.Environment.CommandLine);
    //
    // Locate the argument
    //
    ArgPtr := CommandLine.Buffer;
    while (ArgPtr[0] <> ' ') do Inc(ArgPtr);
    Inc(ArgPtr);
    //
    // Print out the argument
    //
    StringBuffer := RtlAllocateHeap( Heap, 0, 256 );
    //swprintf( stringBuffer, L"\n%s", argPtr );
    HelloWorld.Buffer        := stringBuffer;
    HelloWorld.Length        := Length(StringBuffer) * SizeOf(WideCHAR);
    HelloWorld.MaximumLength := HelloWorld.Length + SizeOf(WideCHAR);
    RtlDisplayString( @helloWorld );
    //
    // Free heap
    //
    RtlFreeHeap( Heap, 0, stringBuffer );
    //
    // Terminate
    //
    RtlTerminateProcess( THandle(-1), 0 );
end;
end.

Cita:
Empezado por dec
Lo digo porque me llama la atención que en el código de Russinovich, en el tipo de proyecto "Aplicación nativa de Windows NT", no existe el punto de entrada "main" habitual en los programas escritos en el lenguaje C.
Si, a mi tambien me sorprendio, pero segun lo que entendi que explican en la pagina de sysinternal es que este tipo de aplicacion no necesita main que solo con la funcion NtProcessStartup la utilizan como entrada, parecido a una dll,


Cita:
Empezado por dec
De hecho, el resultado de la compilación del ejemplo (que también se adjunta), el archivo ejecutable, no lo es bajo Win32, quiere decirse, no parece un ejecutable "al uso".
De hecho apesar de que trae extension ".exe" no es una aplicacion Win32, incluso si la tratas de ejecutar directamente te marca error.

Cita:
Empezado por dec
Entonces, y sin saber absolutamente nada del tema, ¿cómo se supone que has tratado de traducir el código fuente? ¿Has creado una aplicación de "consola"? Pero esta no cuenta con el método "principal" conque cuenta el código fuente de Russinovich, y de hecho crea un ejecutable para Win32,... lo contrario que el código fuente de Russinovich.

En definitiva, lo que me gustaría saber es qué has intentado, más que nada por ver si a partir de ahí se puede aportar algo, y, por otro lado, me planteo si no será que con Delphi no se pueda llevar a cabo una "Aplicación nativa para Windows NT", simple y llanamente.
Arriba te relacione parte del fuente que traduje y ademas trate de contactar con Mark Russinovich pero no obtuve mucha ayuda.

Última edición por dec fecha: 05-06-2006 a las 21:44:12.
Responder Con Cita
 



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
Cómo hacer que se ejecute mi aplicación cuando se abra Internet Explorer? JuanErasmo API de Windows 3 19-04-2006 19:12:33
No pemitir que se ejecute una aplicación barrauda API de Windows 12 18-11-2005 22:07:15
solo se ejecute una sola vez la aplicacion.... uper Varios 1 16-03-2005 18:49:40
Alguien sabe como hacer que tu aplicacion se ejecute... Supra Varios 7 05-02-2005 21:10:09
Que se ejecute mi aplicación a una hora GliceMan Varios 6 04-02-2005 11:07:42


La franja horaria es GMT +2. Ahora son las 12:17:37.


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