NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: c# form - spuštění nového procesu DisplaySwitch.exe pod win10

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Michaal.K
Člen
Avatar
Michaal.K:15.5.2017 11:06

Ahoj,
vyskytl se mi zajímavý problém v mé aplikaci. Aplikace automaticky odpojuje externí monitor, viz. kód níže:

var proc = new Process();
proc.StartInfo.FileName = "DisplaySwitch.exe";
proc.StartInfo.Arguments = "/internal";
proc.Start();

Takto to bezproblémů funguje pod win7, ale pod win10 mi to vyhodí chybovou hlášku:
Systém nemůže nalézt uvedený soubor.
Ale když dám vyhledat DisplaySwitch.exe tak ho v system32 normálně najdu. Zkoušel jsem zadat i celou cestu: C:\Windows\Sys­tem32\DisplayS­witch.exe, ale stejně to hodí zase tu chybu....
Dokonce když stisknu na ploše tlač. win + P tak se spustí. Takže ve win tato aplikace funguje.
Nevíte někdo co stím. Díky

 
Odpovědět
15.5.2017 11:06
Avatar
Odpovídá na Michaal.K
Michal Štěpánek:15.5.2017 12:37

Nevím, jestli by to mohlo být tím, ale má ta aplikace u WIN10 právo spouštět ten soubor?

Nahoru Odpovědět
15.5.2017 12:37
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Michal Štěpánek
Michaal.K:15.5.2017 12:56

Ahoj, to nevím jestli má právo. Jak bych to zjistil? Ale když jsem zkoušel pustit aplikaci jako správce tak mi to hodilo stejnou chybu. Díky

Editováno 15.5.2017 12:56
 
Nahoru Odpovědět
15.5.2017 12:56
Avatar
Odpovídá na Michaal.K
Michal Štěpánek:15.5.2017 13:16

zkus si nechat vypsat třeba do messageboxu celou cestu k tomu spouštěnému souboru, třeba je tam nějaké lomítko navíc, nebo naopak chybí...

Nahoru Odpovědět
15.5.2017 13:16
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Radek Chalupa:15.5.2017 13:56

Myslím že problém bude v tom, že to spouštíš z 32-bitové aplikace. Zkus sestavit 64-bitovou verzi toho projektu a mělo by to fungovat, alespoň u mě to funguje s tím kódem který jsi uvedl.

Radek Chalupa
www.radekchalupa.cz

 
Nahoru Odpovědět
15.5.2017 13:56
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Radek Chalupa
Michaal.K:15.5.2017 14:29

I to je možná závada. Ale nevím, kde přesně to změním. Používám MS Visual studio 2010 Express a v nastavení projektu jsem to nikde nenašel. Díky

 
Nahoru Odpovědět
15.5.2017 14:29
Avatar
Radek Chalupa:15.5.2017 14:51

V "properties" projektu na záložce "build" odškrtnout checkbox "prefer 32-bit.."
Nebo v configuration manageru je možnost new platforn a tam zvolit x64 a na ní pak přepnout;

 
Nahoru Odpovědět
15.5.2017 14:51
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Radek Chalupa
Michaal.K:15.5.2017 15:06

Tak v properties v záložce build nic takového nemám, viz. obrázek níže.

 
Nahoru Odpovědět
15.5.2017 15:06
Avatar
Radek Chalupa:15.5.2017 15:10

možná express verze nepodporuje 64-bit... každopádně bych doporučil community verzi, nyní už je verze vs 2017 (15.2), je to v podstatě plnohodnotná verze "professional" zdarrna pro jednotlivce a malé firmy.

 
Nahoru Odpovědět
15.5.2017 15:10
Avatar
Odpovídá na Michaal.K
Michal Štěpánek:15.5.2017 15:28

Stáhni si VS 2017 Community, tam funguje vše. Mě se na některých počítačích stávalo, že aplikace na "platformu x64" házely chyby, začal jsem tedy používat kompilaci na platformu "x86" a tak mi to funguje i na 32bit i na 64bit strojích...

Nahoru Odpovědět
15.5.2017 15:28
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Michaal.K
Člen
Avatar
Odpovídá na Radek Chalupa
Michaal.K:19.6.2017 10:40

Tak po dlouhé odmlce jsem opět tady... Byl jsem dlouho služebně pryč a nějak jsem neměl čas.
Nainstaloval jsem nové visual studio a změnil cílovou platformu na x64. Pak už mi to funguje. Problém nastatane na 32bit systému, kde se mi aplikace vůbec nespustí (logicky :-) a já bych chtěl aby aplikace běžela na obou systémech). Pokud dám cílovou platformu x86 tak na 64bit systému mi to vyhodí hlášku, že displayswitch.exe to nenašlo a na 32bit systému to funguje.
Pak jsem zkusil volbu any PC a to funguje na obou verzích systému (jak na 32bit tak i na 64bit), ale nevím co přesně to znamená. Případně jestli tato volba nezpůsobí nějaké omezení. Díky za rady...

 
Nahoru Odpovědět
19.6.2017 10:40
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.