C# program måste utföra två grejer efter varandra?

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

C# program måste utföra två grejer efter varandra?

Hallå!

Jag har ett C# program som har två funktioner som måste ske efter varandra, ta som exempel muspekaren i windows, först förflytta den, sen klicka. Så, tex ett annat program med samma funktionalitet får inte hoppa in mellan flyttning & klickning och sabba. Det går ju tex inte att använda lock eller? det fungerar väll bara i en & samma applikation?

MVH
Dalton Sleeper

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Mar 2008

En närmare förklaring av vad du vill uppnå vore bra. Förstår jag dig rätt här: Du har två processer, A1 och A2 som båda är instanser av samma applikation A? Om A1 anropar funktion f och g i följd så vill du absolut inte att A2 ska hinna emellan med sina anrop till f och g innan A1 är helt klar med sitt anrop till g?

Jag tror att du får titta på en lösning med delat minne (shared memory), där du lagrar en enkel variabel som fungerar som lås... men jag känner bara till principen och inte alls hur man gör.

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

Nja, processerna kan vara skilda, ingen kommunikation mellan dom genom meddelanden eller delat minne, tänkte om det fanns något sätt att tvinga en viss mängd kod köras utan att avbrytas...

det jag vill kanske inte alls går att göra, men frågar iaf. Om jag hade meddelande sändning, delat minne eller trådat i samma process så skulle det vara enklare, men tex användaren skulle då ändå kunna rycka i musen och ev position & klick skulle hamna fel... eller om det finns någon sorts hook... tror inte heller att man kan använda lock på muspekare vad jag vet..

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

Ett sätt jag kollar upp nu är att använda mouse hook, som då antagligen kan verifiera om musklicket skedde på rätt ställe eller ej, om processen kan få reda på det kan den enkelt göra ett omklick...

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |

Trädvy Permalänk
Medlem
Plats
Kristianstad
Registrerad
Apr 2009

Någon form av global mutex, kanske du är ute efter. Vet dock ej om man kan göra i c#. Finns även risk för ordentliga låsningar.

Trädvy Permalänk
Medlem
Registrerad
Jan 2006

Använd följande kod i Main() metoden

bool AloneInstance; Mutex m = new Mutex(true, "något unikt, t.ex. ett GUID", out AloneInstance); if (!AloneInstance) return; //Eller vad dit första form-fönster heter Application.Run(new Form1()); GC.KeepAlive(m);

Nu kan programmet bara köras en åt gången.

Trädvy Permalänk
Medlem
Plats
Sandviken
Registrerad
Mar 2005

Förstår fortfarande inte frågan...
är det bara muspekaren du vill frysa under en tid?

Besök gärna: www.wedlund.eu
Tips på vps:

Trädvy Permalänk
Medlem
Plats
127.0.0.1
Registrerad
Sep 2003

Det verkar nästan som om det är mus upp meddelandet som inte kommer i tid, därav avbryts/flyttas av andra programmet... Har en knapp som endast verkar scrolla ett fönster när mus up inträffar, gjorde en toklösning att rulla denna sida manuellt för säkerhets skull då det räcker med mus ner för det viktiga att fungera...

Alltså, de nu två programmen fungerar som bottar (på svenska? autobots, agenter...?) som körs på samma dator, de slåss om muspekaren och kan stjäla den ur handen för den andra. Så, en knapp en bot brukar trycka på vill ha både mus ner och upp för att bete sig normalt (verkar det som), dock är det bara denna av ett 10 tal knappar som strular, och endast om båda bottarna körs samtidigt, har alldrig missat detta när endast en körs.

Wee, det här vart stökigt, och sent är det också, och inget bevisat, bara gissningar...

mounte: nja, har några knapptryckningar också som sänds tex med sendkeys("^c"); eller liknande.

Dock har jag problem med det automatiskt, kopiera en text/nuffrer på en sida, få in i clipboard, ut etc, fungerar att kopiera med en timer med manuell markering, fast när man markerar text med musklick (skickade) först och sedan kör ctrl+c med sendkeys så tokhänger sig programmet utan meddelanden.

Känns som jag kom in på andra spår nu, fråga om ni vill
Det kanske inte är möjligt att få två sådana program att fungera 100% parallellt på samma dator :/ ett biggare program som är trådat fixar ju det största problemet, att dom stjäl muspekaren för varandra, ev knapptryck också, dock hade det varit bäst att ha dom som separata program, tycker jag iaf men men.

1: Intel i7-3930K | 32GB Corsair Dominator GT | Asus Rampage IV Extreme x79 | 2 x 1080 GameRock Premium 8GB | 2 x Samsung Pro 840 512GB | Corsair AX1200i | BenQ XL2411 24" / W1070 135" | Bose QC25 | Windows 10 Pro x64 | HTC Vive |
2: Intel Core i7-4700HQ | 32GB RAM | Intel HM87 Express | GTX 780M | 17" | Windows 10 x64 |