[C#] WM unhide een hidden Form

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • bpt
  • Registratie: Maart 2002
  • Laatst online: 03-09 14:37
Ik kom er even niet meer uit,

Ik ben bezig met een applicatie te maken in C#, het is een agenda, contacten &sms/mms backup programma die alles op een server in de database opslaan (ala Microsoft MyPhone) maar dan met de optie om ook de desktop Outlook te synchroniseren diezelfde server/database, dus wireless synchronisatie en backup en webinterface in 'één'.

Door middel van Forms kan de gebruiker inloggen, instellingen doen, synchroniseren etc etc. Door middel van ShowDialog en de DialogResults bepaal ik of de gebruiker naar het vorige form wil (form.ShowDialog() geeft bijv. DialogResult.Cancel als de gebruiker vorige heeft gekozen) etc.

Als de gebruiker heeft gekozen om automatisch te synchroniseren, moet de applicatie naar de achtegrond verdwijnen zodra hij word 'Afgesloten' maar wel blijven runnen. Dat lukt ook, door het eerste Form wat door Application.Run(...) word geopend op Visible = false; te zetten, hierdoor is de applicatie niet zichtbaar voor de gebruiker en niet zichtbaar in de TaskManager.

Nu is mijn vraag, hoe krijg ik datzelfde form weer visible, ik kan er namelijk nu niet meer bij?

Het mooiste zou zijn, als het mogelijk zou zijn het Form weer visible te maken zodra de exe weer word geopend (gebruiker kiest weer Start->BackupNaam). Hiervoor zou je moeten kunnen afvangen dat de applicatie exe weer word geopend.

Mijn tweede idee was, een aparte executable te maken, die;
1. Kijkt of de background app draait.
2. De app start als deze niet is gestart.
3. De app weer visible maakt als deze al draait.

Maar hoe oh hoe krijg ik van uit die exe, het Form uit de andere exe weer visible?

Ik heb gedacht aan een socket, om op die manier van de ene exe naar de andere exe te communiceren, maar dat is naar mijn idee misschien een beetje overkill?

Graag de mening van anderen, en als iemand mij in de goede richting kan duwen of voorbeelden kan geven, graag!

Overige informatie:
C#, Compact Framework 3.5, moet werken op Windows Mobile 5 of hoger.

Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
Je kunt 2 dingen doen.

In je applicatie luisteren op een socket en in de tweede keer als je start een bericht sturen naar de poort waarop die socket luistert.

Of je kunt bezig met interprocess communication:
http://www.google.com/sea...d=opera&ie=utf-8&oe=utf-8


Zoiets als dit dus: http://www.switchonthecod...ing-named-pipes-in-csharp

[ Voor 15% gewijzigd door roy-t op 03-11-2010 21:01 ]

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
offtopic:
Dit lijkt me wat gek omdat named pipes gewoon in het framework zitten sinds 3.5.... Ik zou zeggen, kijk eens hiernaar: C# : how to - single instance application that accepts new parameters ?. Maar helaas kan dit sowieso niet onder Windows Mobile.


Kijk eens naar Easy IPC on Windows Mobile? en http://msdn.microsoft.com/en-us/library/aa446556.aspx. Of misschien gewoon FindWindow/ShowWindow als je toch niks wil doorgeven.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • bpt
  • Registratie: Maart 2002
  • Laatst online: 03-09 14:37
Opgelost met FindWindow ShowWindow en vervolgens Process.Start om hem naar de voorgrond te halen.
Bedankt voor het meedenken!

Acties:
  • 0 Henk 'm!

Verwijderd

weet je wel zeker dat je met Process.Start je active programma naar voren haalt en niet een nieuwe opstart ?

Acties:
  • 0 Henk 'm!

  • CMG
  • Registratie: Februari 2002
  • Laatst online: 10-12-2024

CMG

Verwijderd schreef op zondag 07 november 2010 @ 12:35:
weet je wel zeker dat je met Process.Start je active programma naar voren haalt en niet een nieuwe opstart ?
Single Instance Mutex Construction kan daarbij een uitweg bieden.

Daarna met een paar Win32 API calls (FindWindowEx om handle te vinden en SetForeGroundWindow om het scherm naar voren te brengen) lukt dat allemaal wel.

NKCSS - Projects - YouTube


Acties:
  • 0 Henk 'm!

  • bpt
  • Registratie: Maart 2002
  • Laatst online: 03-09 14:37
Ik geloof niet dat je in Windows Mobile standaard meerdere instanties kan starten van een app?
Door het 'herstarten' maak je de gestarte versie weer 'actief'

Acties:
  • 0 Henk 'm!

Verwijderd

ah ik ben zelf CE 5 gewend maar die gebruikt ook het CF. deze start dan wel meerdere keren het zelfde op
Pagina: 1