Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[C#] wykrycie "Procesu" ... nie mam koncepcji jak to nazwa?

Idź do strony 1, 2  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, …
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 188

PostWysłany: Sob Lis 10, 2018 12:27 pm  OP    Temat postu: [C#] wykrycie "Procesu" ... nie mam koncepcji jak to nazwa? Odpowiedz z cytatem Pisownia

Po naci?ni?ciu buttona odpalam poni?szy kod, który otwiera okre?lony plik w notatniku systemowym.
Kod:
private void Notes_open_Click(object sender, RoutedEventArgs e)
{
    string pathAndFileName = Globals.baseDir + @"\Data\notes.eln";
    Process.Start("notepad.exe", pathAndFileName);
}


Kiedy klikn? buttona ponownie, uruchamia si? druga instancja notatnika. Jak zrobi?, ?eby po klikni?ciu buttona - je?li notatnik z tym plikiem jest ju? otwarty drugi notatnik si? nie odpala? a ten otwarty stawa? si? bie??cym oknem ?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Sob Lis 10, 2018 11:08 pm      Temat postu: Odpowiedz z cytatem Pisownia

Za pierwszym uruchomieniem procesu pobierz jego ProcessID. Potem sprawdzaj, czy proces o takim ID ju? istnieje
_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 188

PostWysłany: Sob Gru 01, 2018 2:24 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

W klasie Globals mam zapami?tan? ?cie?k? startow? programu
//Globals.baseDir = Environment.CurrentDirectory;

Tu uruchamiam przegl?dark? XPS z plikiem jako parametrem. Kiedy folder w nazwie nie ma spacji (np. "C:\ABC") wszystko jest ok ale kiedy jest jaka? spacja ("C:\ABC 123") - to wywala, ?e pliku nie znaleziono.
Kod:
string pathAndFileName = Globals.baseDir + @"\_bufor_xps.xps";
Process.Start("xpsrchvw.exe", pathAndFileName);


Tutaj robi? to samo z notatnikiem i mimo spacji w nazwie folderu - wszystko jest ok.
Kod:
string pathAndFileName = Globals.baseDir + @"\Data\notes.eln";
Process.Start("notepad.exe", pathAndFileName);


Co robi? ?le ? Jak to naprawi? ?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Sob Gru 01, 2018 2:52 pm      Temat postu: Odpowiedz z cytatem Pisownia

Jak sam piszesz, nazwa pliku w pierwszym przypadku "ABC 123"ma spacj?, a w drugim przypadku spacji nie zawiera. Dziwne, bo dla funkcji Process.Start nazwa pliku ze spacj? nie powinna powodowa? b??du.
Proponuj? wstawi? breakpiont w wierszu nr 2 i sprawdzi? co zawiera zmienna pathAndFileName, czy spe?nia rol? jak? powinna spe?nia? ?cie?ka do pliku. Czasem ?cie?ka jest zako?czona uko?nikiem, a czasem nie, wi?c to trzeba obs?u?y?.
Poza tym ?cie?ka ?rodowiskowa Environment.CurrentDirectory jest ostatni? ?cie?k? domy?ln? Systemu Operacyjnego, a nie twojego programu. To powinna by? ?cie?ka App.path twojej aplikacji. One nie zawsze s? to?same.

_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 188

PostWysłany: Sob Gru 01, 2018 3:06 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Spacj? zawiera nazwa folderu a nie pliku.
Zmienn? sprawdzi?em i jest ok. Czytam o tym w sieci ale nic konkretnego nie znalaz?em...
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Sob Gru 01, 2018 3:27 pm      Temat postu: Odpowiedz z cytatem Pisownia

Czy mo?esz pokaza? ?cie?k? Environment.CurrentDirectory ?
_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 188

PostWysłany: Sob Gru 01, 2018 9:24 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Environment.CurrentDirectory: C:\Users\Grzegorz\Desktop\EntomoLabels 123
Globals.baseDir: C:\Users\Grzegorz\Desktop\EntomoLabels 123
pathAndFileName: C:\Users\Grzegorz\Desktop\EntomoLabels 123\_bufor_xps.xps

Foilder EntomoLabels 123 - jest na pulpicie. Kiedy zmieni? mu nazw? na tak? bez spacji - wszystko dzia?a jak nale?y.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
samolot



Dołączył: 26 Sty 2006
Posty: 8376
Skąd: Toru?

PostWysłany: Nie Gru 02, 2018 3:14 pm      Temat postu: Odpowiedz z cytatem Pisownia

Dr??? temat,
bo samolot napisał:
Proponuj? wstawi? breakpiont w wierszu nr 2 i sprawdzi? co zawiera zmienna pathAndFileName,

Mo?e akurat w tym momencie wykonania programu ta zmienna przez jakie? przekszta?cenia ma inn?, zmienion? tre???
Cytat:
...to wywala, ?e pliku nie znaleziono.

Czyli nie ma b??du kodu: on, zgodnie ze swoj? rol?, szuka pliku i zwraca informacj?, ?e go nie znalaz?.
Wiec, wg mnie cudów nie ma,bo :
1. Albo masz w tej zmiennej nieistniej?c? nazw? pliku,
2. Albo masz w niej nieistniej?c? nazw? katalogu,
3. Albo plik nie istnieje tam, gdzie uwa?asz, ?e istnieje

Proponuj? zastosowa? najpierw co? takiego:
Kod:
Dim pathAndFileName As String = Nothing         'to twoja zmienna na pe?n? ?cie?k?
Dim InfoPliNa As System.IO.FileInfo = Nothing
Dim CzyIstnieje As Boolean                      'do tej zmiennej powinna by? w tym kodzie zwrócona warto?? True, je?li plik w podanej lokalizacji istnieje


InfoPliNa = My.Computer.FileSystem.GetFileInfo(pathAndFileName)  
CzyIstnieje = InfoPliNa.Exists

Patrz na MSDN: klasa FileInfo

_________________
Nie zadawaj bezcelowych pyta? / Windows 8.1 / Windows 10 / VB2008 / VB 2010 / VB 2012 / Pisz poprawnie
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość Wyślij email
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 188

PostWysłany: Nie Gru 02, 2018 7:21 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Je?li nie ma spacji w nazwie folderu - jest ok (czyli ?cie?ka prawid?owa), je?li spacja jest - ?le. Plik istnieje bo widz? go w otwartym oknie folderu obok okna aplikacji. Problemem jest albo spacja albo (przy jej obecno?ci) - znak "\", który jak czytam w sieci - czasami w zmiennych wyst?puje podwójnie - i niestety nie rozumiem dlaczego, albo mo?e znaczenie znaku "@" w sytuacji ze spacj? i bez jest ró?ne.
Generalnie jak podgl?dam zmienne - jest ok.
By? mo?e przekazywanie ?cie?ki jako parametru wymaga czego? dodatkowego... sam ju? nie wiem i jest to do?? frustruj?ce.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Grzegorz123



Dołączył: 27 Cze 2017
Posty: 188

PostWysłany: Nie Gru 02, 2018 7:55 pm  OP    Temat postu: Odpowiedz z cytatem Pisownia

Wywo?anie Process.start z sam? nazw? pliku - bez ?cie?ki - otwiera plik nawet je?li w nazwie folderu s? spacje.
Wola?bym podawa? ?cie?k? bo wtedy mam pewno?? sk?d i co jest otwierane. Na razie niestety nie znalaz?em rozwi?zania. Próbowa?em zast?powa? jeden "\" dwoma "\\" niestety bez rezultatu.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Visual Studio: C#, VB, VC++, … Wszystkie czasy w strefie CET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.21384 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |