Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-02-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Hacer una aplicación sin form

Parecerá una pregunta tonta, pero ¿cómo puedo hacer una aplicación sin ningún form?, es porque quiero hacer una aplicación que evite abrir ciertas aplicaciones y no quiero comerme el coco con APIs para que no salga el form en ningún lado....

Otra cosa... ¿cómo crearía los componentes?, digo... quiero poner un TTimer para que me escanee en busca de los Handles de las aplicaciones..., ¿cómo creo el componente?¿cómo me la tengo que montar para poner lo que quiera en OnTimer?

Utilizo Delphi 7
__________________
:)
Responder Con Cita
  #2  
Antiguo 19-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Ok... te vas a tener que "romper el coco" manejando una ventana que no sea un TForm... Lo que tienes que hacer es crear un proyecto nuevo, y quitar el formulario, escribir el código directamente en el DPR o parte en el DPR y parte en units.
Te recomiendo buscar info sobre las funciones AllocateHWnd y DeallocateHWnd, en estas funciones tienes el código de como crear una ventana en Windows.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 19-02-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Gracias por tu ayuda, buscaré info sobre eso, si me tropiezo o no encuentro nada, doy un toque
__________________
:)
Responder Con Cita
  #4  
Antiguo 19-02-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Yo tengo un pequeño ejemplo por aquí lo voy a pegar para que te sirva de punto de partida.
Código:
function WindowProc(hWnd, uMsg, wParam, lParam: Integer): Integer; stdcall; // Definimos la variable encargada de procesar los mensajes.
begin
 Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
 If (uMsg = WM_DESTROY) then Halt; // Si damos al boton de la X, la aplicacion termina

 If (lParam = Buton2) And (uMsg = WM_COMMAND) then begin // Si el mensaje viene del boton y es la pulsacion de este . . .
  Halt; // Cerramos la Aplicacion.
 end;
 If (lParam = Buton1) And (uMsg = WM_COMMAND) then begin // Si el mensaje viene del boton y es la pulsacion de este . . .
  Longitud := GetWindowTextLength(Edit1); // Averiguamos cual es la longitud del texto de la primera edit
  GetMem(Sumando1,Longitud+1); // Cogemos memoria para el texto.
  GetWindowText(Edit1,Sumando1,Longitud+1); // COgemos el texto que hay en el edit y lo almacenamos en la variable Sumando1
  Longitud := GetWindowTextLength(Edit2); // Averiguamos cual es la longitud del texto de la segunda edit
  GetMem(Sumando2,Longitud+1); // Cogemos memoria para el texto.
  GetWindowText(Edit2,Sumando2,Longitud+1); // Cogemos el texto que hay en el edit y lo almacenamos en la variable Sumando2
  Valor := StrToInt(Sumando1) + StrToInt(Sumando2); // Realizamos la suma.
  SetWindowText(Edit3,Pchar(IntToStr(Valor))); // Ponemos el texto en el edit3
 end;
end;

begin
 Instancia := hInstance;
 { Damos a la variable instance, el handle que aplicara windows
   a nuestro programa }

 Fuente := CreateFont (-1, 0, 0, 0, 400, 0, 0, 0, DEFAULT_CHARSET,
                       OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
                       DEFAULT_QUALITY, DEFAULT_PITCH + FF_DONTCARE,
                       'MS Sans Serif');
     { Creamos la fuente que usaremos en nuestra aplicacion }

 with Clase do begin // Comenzamos a definir la clase de nuestro programa
   Style := CS_CLASSDC or CS_PARENTDC; // Definimos el estilo
   lpfnWndProc := @WindowProc; // La funcion que manejara los mensajes
   hInstance := Instancia; // La handle de nuestra aplicacion
   hbrBackGround := Color_btnFace+1; // El color de fondo
   lpszClassName := 'MrRidk'; // El nombre de la class
   hCursor := LoadCursor(0, IDC_ARROW); // El cursor que usara nuestra aplicacion
 end; // Fin

 RegisterClassA(Clase); // Registramos la clase en windows.

 Handle := CreateWindowEx(0,      'MrRidk','Ejemplo de Programa Con Api', WS_SYSMENU + WS_VISIBLE, 150,   150,   280,    140,   0,  0,  Instancia, Nil);
      {Creamos la ventana, Estilo, Clase,  Titulo,                        Estilo,                  Posicion,    Tamaño,      , El Padre de la ventana, El menu,  La hInstance, El lParam.}
{ ************************************************************************************************************ }

 Edit1 := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','3',WS_VISIBLE+WS_CHILD+BS_TEXT,90,10,175,20,Handle,0,Instancia,Nil);
      {Creamos la ventana, Estilo,         Tipo, Texto, Estilo,                  Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }

 Edit2 := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','2',WS_VISIBLE+WS_CHILD+BS_TEXT,90,31,175,20,Handle,0,Instancia,Nil);
      {Creamos la ventana, Estilo,         Tipo, Texto, Estilo,                  Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }

 Edit3 := CreateWindowEx(WS_EX_CLIENTEDGE,'Edit','5',WS_VISIBLE+WS_CHILD+BS_TEXT,90,52,175,20,Handle,0,Instancia,Nil);
      {Creamos la ventana, Estilo,         Tipo, Texto, Estilo,                  Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }
  
 Label1 := CreateWindow('Static','Sumando 1:',WS_VISIBLE + WS_CHILD, 10, 16,75,20,Handle,0,Instancia,Nil);
      {Creamos la ventana, Tipo, Texto,    Estilo,               Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }

 Label2 := CreateWindow('Static','Sumando 2:',WS_VISIBLE + WS_CHILD, 10, 37,75,20,Handle,0,Instancia,Nil);
      {Creamos la ventana, Tipo, Texto,    Estilo,               Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }

 Label3 := CreateWindow('Static','Resultado:',WS_VISIBLE + WS_CHILD, 10, 57,75,20,Handle,0,Instancia,Nil);
      {Creamos la ventana, Tipo, Texto,    Estilo,               Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }

 Buton1 := CreateWindow('Button','Sumar', WS_VISIBLE + WS_CHILD, 65, 85, 60, 20, Handle,0,Instancia,Nil);
      {Creamos la ventana, Tipo, Texto,    Estilo,               Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }

 Buton2 := CreateWindow('Button','Salir', WS_VISIBLE + WS_CHILD, 150, 85, 60, 20, Handle,0,Instancia,Nil);
     {Creamos la ventana, Tipo, Texto,    Estilo,               Posicion,Tamaño,Padre,Menu,hInstance,El lparam}
{ ************************************************************************************************************ }

 SendMessage(Label1,WM_SETFONT,Fuente,Label1); // Ponemos la fuente que antes hemos definido
 SendMessage(Label2,WM_SETFONT,Fuente,Label1); // Ponemos la fuente que antes hemos definido
 SendMessage(Label3,WM_SETFONT,Fuente,Label1); // Ponemos la fuente que antes hemos definido
 SendMessage(Buton1,WM_SETFONT,Fuente,Buton1); // Ponemos la fuente que antes hemos definido
 SendMessage(Buton2,WM_SETFONT,Fuente,Buton2); // Ponemos la fuente que antes hemos definido
 SendMessage(Edit1,WM_SETFONT,Fuente,Edit1); // Ponemos la fuente que antes hemos definido
 SendMessage(Edit2,WM_SETFONT,Fuente,Edit2); // Ponemos la fuente que antes hemos definido
 SendMessage(Edit3,WM_SETFONT,Fuente,Edit3); // Ponemos la fuente que antes hemos definido

 while (GetMessage(Mensaje, Handle, 0, 0)) do // Vamos tratando los mensajes.
  begin
   TranslateMessage(Mensaje);
   DispatchMessage(Mensaje);
  end;

end.
Un Saludo
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 19-02-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Esto debiera de ir al principio, pero lo añado aquí porque al pegar el texto me ha desaparecido el botón de editar el mensaje aún configurando la pantalla a la máxima resolución.
Código:
{Bueno, este ejemplo tratara de mostraros como elaborar una aplicacion sencilla utilizando
 llamadas a API, para crearla debereis hacer una Console Application y quitar la directiva
 (*$APPTYPE CONSOLE*) despues añadir a uses Windows y Messages, y el resto lo esplico paso
 a paso a lo largo del programa. Si bien escribir aplicacion con API es mas complicado tiene
 la gran ventaja de que los programas son pequeñisimos, Este por ejemplo sin APi serian unos
 300 Kb, con API 40 kb ;-)}

 {Copyright ® MrRidk 2000-2001 All rights reserved}
 {ridk@hotmail.com -- http://www.mrridk.cjb.net}
program Ejemplo_Api;

uses
  Windows,
  Messages,
  SysUtils;

var
 Clase: TWndClassA; // Definimos Variables.
 Mensaje : tmsg; // Definimos la variable del mensaje de windows
 Label1, Label2, Label3, Edit1, Edit2, Edit3 : Integer; // Definimos variables
 Buton1, Buton2, Fuente, Handle, Instancia : Integer; // Definimos variables.
 Sumando1, Sumando2 : Pchar; // Definimos variables.
 Valor, Longitud : Integer; // Definimos Variables
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 19-02-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues creo que te será más sencillo romperte la cabeza para ocultar el form. A fin de cuentas son 2 o tres líneas de código.

// Saludos
Responder Con Cita
  #7  
Antiguo 19-02-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Pues Bien yo poco un granito de arena:

Si haces un solo TFOrm y este TFOrm lo pones como Visible := False; la aplicacion desaparece de la barra de tareas. ya lo unico que te faltaria seria quitarlo del ctr-alt-supr, este tema ya se ha trataado en ell club asi que tienes como investigar.

Nota: Si quieres que te aparezca en la bandeja del sistema, puedes utilizar un componente RX.

Suerte
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #8  
Antiguo 20-02-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
eduarcol, en Delphi5 yo ponía mi aplicación como Visible := False y me aparecía un rectángulo de unos 2 cm de ancho y 6 de largo...
__________________
:)
Responder Con Cita
  #9  
Antiguo 20-02-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
en donde aparecia ese rectangulo??, y no es la aplicacion es el formulario unico y principal. te aseguro que si funciona por qe yo lo tengo asi precisamente en delphi 5
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #10  
Antiguo 20-02-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Jeje, pues a mí no me iba. Al referirme a aplicación he querido decir Form. Pero bueno... tampoco es que me vaya a comer mucho la cabeza con el visible. Por cierto... he buscado lo de cambiar lo de Registered User y ahora no se dónde está... me parece que han cambiado la localización...

Gracias marcoszorrilla por tu código... aunque para esta aplicación voy a ocultar el form ( :d ), voy a examinar mientras tanto tu código... a ver si aprendo algo más.
__________________
:)
Responder Con Cita
  #11  
Antiguo 20-02-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Cita:
Empezado por DarkByte
Jeje, pues a mí no me iba.
Y Ahora si te va???


Cita:
Empezado por DarkByte
tampoco es que me vaya a comer mucho la cabeza con el visible.
Y Ahora no te va???

por fin en que queda sirvio o no
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #12  
Antiguo 21-02-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Dije iba porque no lo he vuelto a probar (estaba en linux... y no tengo kylix... aún...), pero ahora ya estoy en Gate's OS y voy a probarlo
__________________
:)
Responder Con Cita
  #13  
Antiguo 21-02-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
Gracias eduarcol, no me funcionaba porque ponía el visible := false en el Object Inspector, pero ahora he colado el código en un botón y tira perfectamente ashias
__________________
:)
Responder Con Cita
  #14  
Antiguo 23-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Agrego algo:
Una pequeña ventaja, al crear una aplicación sin la unit Forms, es que el EXE final será mucho mas pequeño que si la incluyes.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 20:54:21.


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