comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Clipboard Manager

  • 0 Respuestas
  • 1654 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Jhonjhon_123

  • *
  • Underc0der
  • Mensajes: 150
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Jhonjhon_123's Software In Developed
« en: Febrero 23, 2010, 07:27:33 pm »
Empecé hace poco en C y con la ayuda de Pablo y dreams_eater he terminado mi primera aplicación usando la API de Win, un manejador del portapapeles:

Es sencillo, hay un botón para imprimir lo que hay en el portapapeles y otro que saca los datos introducidos en un Textbox y los mete en el portapapeles.

Para cuando sepa un poco más me gustaría hacer lo mismo con imágenes y archivos :)

Código: C
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. #define ID_EDIT 3
  5. #define ID_BUTTON_1 1
  6. #define ID_BUTTON_2 2
  7.  
  8.  
  9. HINSTANCE hInst;
  10. const char g_szClassName[] = "myWindowClass";
  11.  
  12. LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
  13. {
  14.     HWND hwndboton1, hwndboton2;
  15.     static HWND hwndEdit;
  16.     static TCHAR text[30];
  17.  
  18.     switch (iMsg)
  19.     {
  20.         case WM_CREATE:
  21.         hwndboton1 = CreateWindow("button", "Sacar portapapeles",
  22.           WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
  23.           70, 10, 150, 30,
  24.           hwnd, (HMENU) ID_BUTTON_1, hInst, NULL);
  25.         hwndboton2 = CreateWindow("button", "Insertar texto en portapapeles",
  26.           WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
  27.           10, 50, 260, 30,
  28.           hwnd, (HMENU) ID_BUTTON_2, hInst, NULL);
  29.         hwndEdit = CreateWindow(TEXT("Edit"), NULL, WS_CHILD | WS_VISIBLE | WS_BORDER,
  30.           30, 95, 230, 20, hwnd, (HMENU) ID_EDIT,
  31.           NULL, NULL);
  32.         return 0;
  33.  
  34.         case WM_COMMAND:
  35.         switch(LOWORD(wParam))
  36.         {
  37.             case 1:
  38.             {
  39.                 char * buffer = NULL;
  40.                 if (!OpenClipboard(NULL))
  41.                 {
  42.                     SendMessage(hwnd, WM_CLOSE, 0, 0);
  43.                 }
  44.                 HANDLE hData = GetClipboardData(CF_TEXT);
  45.                 char * Portapapeles = (char*)GlobalLock(hData);
  46.                 MessageBox(hwnd, Portapapeles,"Portapapeles",MB_ICONINFORMATION|MB_OK);
  47.                 GlobalUnlock( hData );
  48.                 CloseClipboard();
  49.                 break;
  50.             }
  51.  
  52.             case 2:
  53.                 {
  54.                 int len = GetWindowTextLength(hwndEdit) + 1;
  55.                 GetWindowText(hwndEdit,text,len);
  56.                 if (!OpenClipboard(NULL))
  57.                 {
  58.                     MessageBox (NULL,"Can't open Clipboard","Error",MB_OK);
  59.                     SendMessage(hwnd, WM_CLOSE, 0, 0);
  60.                 }
  61.                 EmptyClipboard();
  62.                 HANDLE hMem = GlobalAlloc(GMEM_MOVEABLE,No tienes permisos para ver links. Registrate o Entra con tu cuenta(text)+1);
  63.                 if (hMem == NULL)
  64.                 {
  65.                     MessageBox (NULL,"Can't allocate memory","Error",MB_OK);
  66.                     CloseClipboard();
  67.                     SendMessage(hwnd, WM_CLOSE, 0, 0);
  68.                 }
  69.                 char * buffer = (char*)GlobalLock(hMem);
  70.                 No tienes permisos para ver links. Registrate o Entra con tu cuenta(buffer, LPCSTR(text));
  71.                 GlobalUnlock(hMem);
  72.                 SetClipboardData(CF_TEXT,hMem);
  73.                 CloseClipboard();
  74.                 }
  75.  
  76.             break;
  77.  
  78.             default:
  79.             break;
  80.         }
  81.         return 0;
  82.  
  83.         case WM_DESTROY:
  84.         PostQuitMessage (0);
  85.         return 0;
  86.     }
  87.  
  88.     return DefWindowProc (hwnd, iMsg, wParam, lParam);
  89. }
  90.  
  91.  
  92. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  93.     LPSTR lpCmdLine, int nCmdShow)
  94. {
  95.     WNDCLASSEX wc;
  96.     HWND hwnd;
  97.     MSG Msg;
  98.  
  99.     wc.cbSize        = sizeof(WNDCLASSEX);
  100.     wc.style         = 0;
  101.     wc.lpfnWndProc   = WndProc;
  102.     wc.cbClsExtra    = 0;
  103.     wc.cbWndExtra    = 0;
  104.     wc.hInstance     = hInstance;
  105.     wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
  106.     wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  107.     wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
  108.     wc.lpszMenuName  = NULL;
  109.     wc.lpszClassName = g_szClassName;
  110.     wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
  111.  
  112.     if(!RegisterClassEx(&wc))
  113.     {
  114.         MessageBox(NULL, "Window Registration Failed!", "Error!",
  115.             MB_ICONEXCLAMATION | MB_OK);
  116.         return 0;
  117.     }
  118.  
  119.     hwnd = CreateWindowEx(
  120.         WS_EX_CLIENTEDGE,
  121.         g_szClassName,
  122.         "Clipboard Manager",
  123.         WS_OVERLAPPEDWINDOW,
  124.         CW_USEDEFAULT, CW_USEDEFAULT, 300, 170,
  125.         NULL, NULL, hInstance, NULL);
  126.  
  127.     if(hwnd == NULL)
  128.     {
  129.         MessageBox(NULL, "Window Creation Failed!", "Error!",
  130.             MB_ICONEXCLAMATION | MB_OK);
  131.         return 0;
  132.     }
  133.  
  134.     ShowWindow(hwnd, nCmdShow);
  135.     UpdateWindow(hwnd);
  136.  
  137.     while(GetMessage(&Msg, NULL, 0, 0) > 0)
  138.     {
  139.         TranslateMessage(&Msg);
  140.         DispatchMessage(&Msg);
  141.     }
  142.     return Msg.wParam;
  143. }

Autor: [N]athaniel
« Última modificación: Enero 26, 2011, 10:30:19 am por ANTRAX »
No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!