Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2008
Avatar de Negriz
Negriz Negriz is offline
Miembro
 
Registrado: feb 2008
Ubicación: Some were inside Colombia
Posts: 123
Poder: 17
Negriz Va por buen camino
Smile Como hago >> Win+D

Hola como estan, esta nueva pregunta es para saber si hay alguna manera de minimizar todas las ventanas, osea simular este cmportamiento; o tambien enviarle "Win+D" al windows... he pensado en SendMessage o PostMessage pero es que no tengo mucha experiencia usandolos y por eso no se como hacrelo.

Alguna sugerencia?

Gacias.
Responder Con Cita
  #2  
Antiguo 21-12-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Código Delphi [-]
uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var Shell: OleVariant;
begin
 Shell := CreateOleObject('Shell.Application');
 Shell.MinimizeAll;
// Shell.UndoMinimizeAll;
end;

Código:
#include <windows.h>
#include <shlobj.h>
 
// ...
 
 CoInitialize(NULL);
 IShellDispatch* Shell = NULL;
 CoCreateInstance(CLSID_Shell, NULL, CLSCTX_SERVER, IID_IDispatch, (void**)&Shell);
 Shell->MinimizeAll();
// Shell->UndoMinimizeAll();

// Shell->Release();
// CoUninitialize();
ó

Código:
 HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
 SendMessage(hWnd, WM_COMMAND, 419, 0);
// SendMessage(hWnd, WM_COMMAND, 416, 0);
Saludos
__________________
RTFM > STFW > Foro > Truco > Post > cHackAll > KeBugCheckEx
Responder Con Cita
  #3  
Antiguo 21-12-2008
Avatar de Negriz
Negriz Negriz is offline
Miembro
 
Registrado: feb 2008
Ubicación: Some were inside Colombia
Posts: 123
Poder: 17
Negriz Va por buen camino
Talking :) :)

Hey muchas gracias cHackAll

Cita:
Empezado por cHackAll Ver Mensaje

Código:
#include <windows.h>
#include <shlobj.h>
 
// ...
 
 CoInitialize(NULL);
 IShellDispatch* Shell = NULL;
 CoCreateInstance(CLSID_Shell, NULL, CLSCTX_SERVER, IID_IDispatch, (void**)&Shell);
 Shell->MinimizeAll();
// Shell->UndoMinimizeAll();

// Shell->Release();
// CoUninitialize();
Bueno este code me dice Multiple declracion de FOLDERSETTINGS en la libreria shlobj.h ... quite el code y solo la declare y pues salio el mismo error.


Cita:
Empezado por cHackAll Ver Mensaje
Código:
 HWND hWnd = FindWindow("Shell_TrayWnd", NULL);
 SendMessage(hWnd, WM_COMMAND, 419, 0);
// SendMessage(hWnd, WM_COMMAND, 416, 0);
y este code funcionó perfecto.
A ver si entendi, el comando Win+D se le envia a la la barra de tareas (donde 419 y 416 son MinimizeAll y UndoMinimizeAll). Bien pero pues, supongamos que necesito algun dia enviarle otro comando como win+R o cualquier otro, como sabira yo que entero va alli... ¿hay algun listado o algo asi?

jejeje muchas gracias cHackAll ya logre hacer lo que queria. Y la pregunta anterior es solo curiosidad

y pues para el primer codigo voy a necesitar un poco mas de tiempo para comprender como es que funciona...
Responder Con Cita
  #4  
Antiguo 21-12-2008
Avatar de Negriz
Negriz Negriz is offline
Miembro
 
Registrado: feb 2008
Ubicación: Some were inside Colombia
Posts: 123
Poder: 17
Negriz Va por buen camino
Hola... encontre la solucion al pirmer problema de la multiple declarracion de FOLDERSETTINGS. Fuente

bueno la idea es que hay ir a Proyect->Options->Directories/Conditionals y en la parte donde dice conditional defines agregar esta linea NO_WIN32_LEAN_AND_MEAN separandola de las demas con un ( ; )

Y funciona perfecto.
Responder Con Cita
  #5  
Antiguo 21-12-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Bueno, aunque el tema está resuelto y veo que llego un poco tarde, voy a aportar otra solución sencilla simulando pulsaciones del teclado. Esta forma puede ser una solución general para otras preguntas de este tipo.

Código:
   
keybd_event(0x5B, 0, 0, 0);    // Pulsa VK_LWIN
keybd_event(0x44, 0, 0, 0);    // Pulsa VK_D
keybd_event(0x5B, 0, KEYEVENTF_KEYUP, 0);    //Suelta VK_LWIN
Saludos.
Responder Con Cita
  #6  
Antiguo 22-12-2008
Avatar de Negriz
Negriz Negriz is offline
Miembro
 
Registrado: feb 2008
Ubicación: Some were inside Colombia
Posts: 123
Poder: 17
Negriz Va por buen camino
Gracias escafandra aunque logre hacer lo que queria no creo que este tema se cierre del todo digamos que todavia tengo algunas preguntas:

Con respecto a la solucion anterior:
supongamos que necesito algun dia enviarle otro comando como win+R o cualquier otro, como sabira yo que entero va alli... ¿hay algun listado o algo asi?

Con respecto a la nueva solucion:
La pregunta sigue siendo basicamente la misma, (0x5B) estos datos son hexagesimales?
y hay algun listado para saber duales son las teclas? o acaso hay una menra simplemente de saber que tecla es cual en tiempo real? tiene que ver con ASCII?

stube buscando y ahun sigo probado Gracias por el code.

Última edición por Negriz fecha: 22-12-2008 a las 21:19:32.
Responder Con Cita
  #7  
Antiguo 22-12-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por Negriz Ver Mensaje
La pregunta sigue siendo basicamente la misma, (0x5B) estos datos son hexagesimales?
Si, es hexadecimal, pero en decimal tambien funciona, es lo mismo.

Cita:
Empezado por Negriz Ver Mensaje
hay algun listado para saber duales son las teclas?
Busca en la ayuda de Builder las Virtual Keys. Palabra clave: Virtual-Key Codes.

Saludos.
Responder Con Cita
  #8  
Antiguo 23-12-2008
Avatar de Negriz
Negriz Negriz is offline
Miembro
 
Registrado: feb 2008
Ubicación: Some were inside Colombia
Posts: 123
Poder: 17
Negriz Va por buen camino
Talking

muchas gracias
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
como hago???? afrodita Varios 3 27-08-2004 01:12:07
Como lo hago? danytorres SQL 4 08-06-2004 14:27:42
Como hago... Andres_Franco Varios 1 08-01-2004 17:34:19
¿como lo hago? loenx Conexión con bases de datos 6 01-11-2003 15:26:34
Como lo hago¿ MANUEL OVAL SQL 6 31-10-2003 14:43:39


La franja horaria es GMT +2. Ahora son las 09:11:42.


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