c # - Gennemsigtigt vinduesprogram til overlejring i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne skrive en ansøgning til behandling af visse brugerhandlinger.


Ansøgningen vil altid være gennemsigtig og skal klikke igennem. Så vinduet bagved ses, og da den gennemsigtige applikation klikker igennem, skal jeg kunne klikke på vinduet bagved. Kun visse brugerhandlinger (som dobbeltklik) Jeg vil håndtere i min gennemsigtige applikation.


Er det muligt at opnå dette? Eventuelle retningslinjer er værdsat.

Bedste reference


Du kan lave falsk vindueklik fra din app:


[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
}


Nu med dobbelt klik kan du indstille, hvad du nogensinde vil have.

Andre referencer 1


Du kan lave et vindue, der er gennemsigtigt og klikker igennem. Men det er alt eller ingenting. Du kan ikke klikke gennem bortset fra dobbelt klik.


Så for at gøre hvad du vil, tror jeg, du bliver nødt til at bruge en global musekrog til at klare dobbeltklik. Men det kommer til at kræve indbyggerkode.


Faktisk, kom til at tænke på det, hvorfor har du brug for det gennemsigtige klik gennem vinduet overhovedet?