Avatar billede ares Nybegynder
29. november 2006 - 10:45 Der er 11 kommentarer og
2 løsninger

holde øje med genveje

Jeg prøver på følgende:
Helt kort en applikation der holder øje med CTRL, SHIFT og ALT – aktiveres en af disse knapper og holdes den nede skal der poppe et vindue op. Det skal ikke være lokalt, men gælde i alle aktive apllikationer.

BUT HOW???

Ares
Avatar billede lasserasch Juniormester
29. november 2006 - 11:19 #1
Hmmm.... Nemmest vil det nok være at downloade et API, som kan overvåge dit tastatur.

Jeg er ikke så hård i C og C++, men er rimelig til C#. Så jeg ved ikke helt hvad og hvor stor forskellen er.

Til C# kan du bruge Mini-Tools til det!

Det kan alt hvad du har brug for! Har selv brugt det i nogle programmer, som lavede fejl i visse situationer! For at finde ud af hvad brugeren havde trykket på med musen og tastet på tastaturet, satte jeg en log på, hvor jeg brugte denne komponent!

Og nej, den kan nemlig operere uden for dit problem også...


http://www.mini-tools.com/downloads/Mini-Input_Setup.exe/

/Lasse
Avatar billede tokelil Nybegynder
29. november 2006 - 11:43 #2
Avatar billede ares Nybegynder
29. november 2006 - 12:11 #3
Tokelil >> SetWindowsHookEx har jeg også kigget lidt på, men jeg ret ny i C - så jeg har ikke lige kunnet sammenstykke noget kode der virkede.

Har du et uddybende forslag?

Ares
Avatar billede lasserasch Juniormester
29. november 2006 - 12:15 #4
F.eks. kan dette overvåge din CPU forbrug med Win32.

Så har du jo lidt at gå efter. Ved godt det ikke er det samme, men det viser hvordan du opretter en forbindelse til Win32 og hiver forskellige informationer ud :



private void timer1_Tick(object sender, EventArgs e)
{
  ManagementClass class1 = new ManagementClass("Win32_Processor");
 
      foreach (ManagementObject ob in class1.GetInstances())
      {
      label1.Text = Convert.ToString(ob.GetPropertyValue("CurrentClockSpeed"));
      }
}

/Lasse
Avatar billede lasserasch Juniormester
29. november 2006 - 12:22 #5
Du kan finde source kode eksempel på keyboard og mouse hook her : http://www.codeproject.com/csharp/GlobalSystemHook.asp

/Lasse
Avatar billede bertelbrander Novice
30. november 2006 - 00:09 #6
For andre taster en netop shift, alt osv ville man kunne bruge en hook, men det ser ikke ud til at hook'en biver kaldt for disse special taster, der ikke er rigtige taster.

I stedet kan man kaste sig ud i:

#include <windows.h>

HINSTANCE InstanceHandle;
int ShiftCounter;

LRESULT CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
  switch(msg)
  {
  case WM_CREATE:
      SetTimer(hwndDlg, 1024, 1000, 0);
      break;
  case WM_TIMER:
      if(GetAsyncKeyState(VK_SHIFT))
      {
        if(++ShiftCounter > 5)
            MessageBox(0, "Shift has been down for 5 sec", "Whatever", 0);
      }
      else
      {
        ShiftCounter = 0;
      }
      break;
  }
  return DefWindowProc(hwndDlg, msg, wParam, lParam);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR lpCmdLine, INT nCmdShow)
{
  InstanceHandle = hInstance;

  WNDCLASS wc;
  memset(&wc, 0, sizeof(WNDCLASS));
  wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
  wc.lpfnWndProc = DialogProc;
  wc.hInstance = InstanceHandle;
  wc.hbrBackground = (HBRUSH )(COLOR_BTNFACE + 1);
  wc.lpszClassName = "WhateverClass";
  wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  if(!RegisterClass(&wc))
      return FALSE;

  HWND WindowHandle = CreateWindow("WhateverClass",
                                    "Whatever",
                                    WS_MINIMIZEBOX | WS_CLIPSIBLINGS | WS_VISIBLE |
                                    WS_CLIPCHILDREN | WS_MAXIMIZEBOX | WS_CAPTION | WS_BORDER | WS_SYSMENU,
                                    100, 100, 150, 100,  // Position
                                    NULL,
                                    NULL,
                                    InstanceHandle,
                                    0);
  MSG Msg;
  while(GetMessage(&Msg, WindowHandle, 0, 0xFFFF) > 0)
  {
      if(!IsDialogMessage(WindowHandle, &Msg))
      {
        TranslateMessage(&Msg);
        DispatchMessage(&Msg);
      }
  }
  return 0;
}
Avatar billede ares Nybegynder
01. december 2006 - 13:16 #7
Hey Bertel.

Det ser fornuftigt ud... ;)

Men den der include file windows.h - hvad står der i den?

Og hvorfor får jeg fejlmeddelsen

d:\Visual Studio Projects\monitor\monitor.cpp(63): fatal error C1010: unexpected end of file while looking for precompiled header directive

Ares
Avatar billede bertelbrander Novice
02. december 2006 - 02:22 #8
Bruger du Visual C++ Studio Express?

windows.h er headerfilen for det meste af win32 api'et, den er nødvendig for at kunne lave rigtige windows programmer.
Du skal downloade og instalere "Platform SDK" fra:
http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en

Den anden fejl skyldes at den er sat til at bruge "precompiled" headers, du skal slå det fra under Project -> Properties
Under C++ skal du under Preprocessor sætte "Generate Preprocessed file" til no
Under "Precompiled Headers" skal du sætte "Create/Use ..." til "not using ..."
Avatar billede ares Nybegynder
03. december 2006 - 19:26 #9
Bertel >> smid lige et svar så jeg kan dele lidt point ud...

Har du evt. mulighed for at samle det i et eller andet 1 minut applikation, der kan ligge som et system tray icon ?? (mod flere point naturligvis ;)

Ares
Avatar billede bertelbrander Novice
04. december 2006 - 19:59 #10
Prøv at tage et kik på:
http://damb.dk/trayicon.php

Nederst er der et link til et komplet eksempel. Det bør være let at kombinere det program med ovenstående.
Avatar billede ares Nybegynder
04. december 2006 - 20:23 #11
Bertel >> Jeg har fundet frem til din side, og set de mange fine tutorials... og programmet virker nærmest som skræddersyet,,, smid du bare et svar så jeg kan give dig point...

Ares..
Avatar billede bertelbrander Novice
04. december 2006 - 20:58 #12
Jeg samler ikke på point.
Avatar billede ares Nybegynder
04. december 2006 - 21:03 #13
ok... cool nok...

Ares
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester