Gå til innhold

Generere et museklikk på objekt eller posisjon


Anbefalte innlegg

Skrevet

Jeg har et idiotisk problem som foreløpig kan se ut som om kun kan løses ved å generere et klikk på et NotifyIcon (eller et form)

 

Mediaspilleren min går som smurt, men viser ikke video-formen TopMost hvis Me.TopMost blir satt til False ved pause og så tilbake til True ved play. Dette går greit hvis man bruker play/pause-knappen jeg har laget i programmet (på et eget kontroll-form), for da må man jo aktivere programmet for å få trykket på knappen.

 

Verre er det når jeg bruker globale hurtigtaster. Form'et forsvinner fint når jeg trykker på pause på keyboardet, men trykker jeg på play vises bare kontroll-formen. Hvis jeg trykker på pause, og så trykker på programmets NotifyIcon (som setter fokus til applikasjonen), og etter det trykker på play (på keyboardet), så går alt som det skal.

 

Grunnen til dette er nok at DLLen som brukes til video-visning ikke er helt på G, men jeg liker den ellers og vil få dette til å fungere.

 

Med andre ord:

Jeg trenger å programmatisk generere et museklikk på mitt NotifyIcon. Er det mulig i det hele tatt?

 

(og nei, det fungerer desverre ikke med Me.Focus)

Videoannonse
Annonse
Skrevet (endret)

Takk for tipset, den var ny. Men nei, desverre. :(

Har allerede prøvd med APIer: FindWindow() og BringWindowToTop() (som kan se ut som gjør den samme jobben).

 

 

EDIT: Eller vent! Suksess! :D

Sette Play-funksjonen forran AppActivate hjalp voldsomt!

 

Takker og bukker! :)

Endret av moskus
Skrevet (endret)

Pokker heller... det fungerer når den kjører i debug, men ser ikke ut som om det fungerer ellers?

 

 

EDIT: Eller kanskje det er meg som er idiot?

Time will tell! Watch this space! :p

Endret av moskus
Skrevet (endret)

TopMost vil tilsvare

[DllImport("User32.dll")]
public static extern int SetForegroundWindow(int hwnd);

i winapi.

 

BringWindowToFront flytter bare vinduet til fronten (men bakom enhvert vindu som er TopMost), mens SetForegroundWindow setter vinduet til å ligge over alle andre vinduer. Dersom det finnes flere andre vinduer som også er TopMost så vil du selvsagt konkurrere om hvem som faktisk skal ligge på toppen. Så antar det siste programmet som kjører SetForegroundWindow vil ligge øverst.

 

Ellers kan du prøve Application.DoEvents i koden etter AppActivate eller TopMost propertien er endret. Mulig det hjelper.

 

Dersom andre skal bruke applikasjonen så er neppe løsningen med automatisk museklikk på notifyikonet. Noen har nok autohide på taskbar'en sin.

 

SetForegroundWindow vil helt garantert sette vinduet ditt til toppen.

Endret av wolf5
Skrevet

Yes! :w00t:

 

SetForegroundWindow gjorde susen! Takk Wolf! :)

 

Dette var veldig nyttig! Da kan jeg fortsette på et annet program som skal ha et popup-vindu, men som ikke viser det (før nå). Genialt!

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...