Tag: winapi

Entries for tag "winapi", ordered from most recent. Entry count: 18.

Uwaga! Informacje na tej stronie mają ponad 5 lat. Nadal je udostępniam, ale prawdopodobnie nie odzwierciedlają one mojej aktualnej wiedzy ani przekonań.

Pages: > 1 2 3

# Raw Input

21:22
Thu
21
Aug 2008

Trafiłem ostatnio na ciekawą, a mało chyba znaną część WinAPI - Raw Input. Pozwala ona na otrzymywanie przez okno komunikatów WM_INPUT z informacjami od podłączonych do komputera klawiatur, myszek i innych urządzeń wejściowych, jak joystick, ekran dotykowy czy nawet mikrofon. Celowo napisałem w liczbie mnogiej - to API pozwala na obsługę i rozróżnianie wielu podłączonych do komputera myszek i klawiatur! Ponadto daje dostęp do informacji od myszy w wyżej rozdzielczości, niż standardowa.

Ale coś za coś. Raw Input nie przetwarza za to przyspieszenia kursora Pointer Ballistics, do którego przyzwyczajeni są użytkownicy. Dlatego ten artykuł zaleca, aby do obsługi kursora stosować standardowy WM_MOUSEMOVE, do poruszania kamerą i wszędzie gdzie przyda się duża precyzja - Raw Input, a DirectInput stosować tylko do obsługi manipulatorów (joysticki, pady, kierownice).

Na koniec ciekawostka: Jest też darmowa, wieloplatformowa biblioteka do obsługi wielu myszek - ManyMouse.

Comments | #winapi Share

# Odpalić program i poczekać

20:35
Thu
07
Aug 2008

Jak uruchomić z poziomu swojego programu inny program i zaczekać na jego zakończenie? Funkcji do uruchamiania programów jest wiele. Najprostsza, ale posiadająca małe możliwości jest funkcja system z biblioteki standardowej C, która pozwala uruchomić dowolne polecenie systemowe. Prosta jest też funkcja WinExec, ale ona jest przestarzała i niezalecana.

Pośród tych potężnych zostają dwie, z których każda ma swoje wady i zalety. ShellExecute i ShellExecuteEx pozwala "uruchomić" dowolny plik lub wykonać na nim inną akcję powłoki (np. "open", "edit", "print"). W przypadku plików EXE to będzie uruchomienie, a dla różnych dokumentów, ich otwarcie w domyślnej aplikacji skojarzonej z rozszerzeniem. Z kolei funkcja CreateProcess pozwala uruchomić plik wykonywalny podając przy tym m.in. własne zmienne środowiskowe czy też uchwyty przechwytujące konsolowe wejście-wyjście. Zwraca natomiast uchwyt do utworzonego procesu.

Ostatnio wyczytałem, że funkcja ShellExecuteEx też potrafi zwrócić uchwyt do utworzonego procesu. Wystarczy w strukturze SHELLEXECUTEINFO ustawić pole fMask na flagę SEE_MASK_NOCLOSEPROCESS. Wówczas pole hProcess zostanie wypełnione uchwytem. Potem wystarczy już tylko poczekać na zakończenie programu takim wywołaniem:

WaitForSingleObject(shell_execute_info.hProcess, INFINITE);

Comments | #winapi Share

Pages: > 1 2 3

STAT NO AD
[Stat] [STAT NO AD] [Download] [Dropbox] [pub] [Mirror]
Copyright © 2004-2018