2012-02-29 11 views
5

Chcę napisać aplikację, aby przetworzyć określone działania użytkownika.Aplikacja okna przezroczystego do nakładki w systemie Windows

Aplikacja będzie zawsze przezroczysta i powinna być kliknięta. Tak więc, okno z tyłu będzie widoczne, a gdy kliknie przezroczysta aplikacja, powinienem kliknąć okno. Tylko niektóre działania użytkownika (takie jak podwójne kliknięcie) Chcę obsłużyć w mojej przezroczystej aplikacji.

Czy można to osiągnąć? Wszelkie wskazówki są mile widziane.

Odpowiedz

3

Można dokonać fałszywe kliknięcia okna z aplikacji:

[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)] 
    public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo); 

    private const int MOUSEEVENTF_LEFTDOWN = 0x02; 
    private const int MOUSEEVENTF_LEFTUP = 0x04; 
    private const int MOUSEEVENTF_RIGHTDOWN = 0x08; 
    private const int MOUSEEVENTF_RIGHTUP = 0x10; 

private void Form_MouseClick(object sender, MouseEventArgs e) 
{ 
    this.Hide(); 
    Point p = this.PointToScreen(e.Location); 
    mouse_event(MOUSEEVENTF_LEFTDOWN , p.X, p.Y, 0, 0); 
    mouse_event(MOUSEEVENTF_LEFTUP, p.X, p.Y, 0, 0); 
    this.Show();//since this.opacity = 0; form will never be really visible 
} 

Teraz kliknij dwukrotnie na można ustawić, co kiedykolwiek chcesz.

+0

Co byś zrobił, upewniając się, że ta fałszywa forma jest na wierzchu? Kiedy użytkownik przynosi inny formularz na górę kolejności Z, ten formularz nie otrzyma dwukrotnego kliknięcia. –

+0

@ DavidHeffernan - tak, to naprawdę problem. – Jimmy

+0

@ David Heffernan, Common man: 'this.TopMost = true;' –

1

Możesz zrobić okno, które jest przezroczyste i klikalne. Jednak to wszystko albo nic. Nie można klikać, oprócz podwójnych kliknięć.

Tak więc, aby zrobić to, co chcesz Uważam, że będziesz musiał użyć globalnego haka myszy, aby obsłużyć podwójne kliknięcia. Ale to będzie wymagać natywnego kodu.

Rzeczywiście, pomyśl o tym, dlaczego w ogóle potrzebujesz przezroczystego kliknięcia przez okno?

+0

podczas wykonywania prezentacji lub szkolenia, które mogą dać możliwość zwiększenia doświadczenia. Na przykład mogę podkreślić/zakreślić część aplikacji/prezentacji, którą pokazuję. – Jimmy

+0

Istnieje już wiele narzędzi, które to robią. –

+1

Tak, ale chciałbym mieć możliwość rozszerzenia funkcjonalności. Nie widziałem żadnego narzędzia open source, które można rozszerzyć. – Jimmy

Powiązane problemy