Witajcie ! W jaki sposób napisać kod ,aby otworzyć plik w określonej lokalizacji tzn. tak jakbym to zrobił klikając myszką to chodzi o to ,żeby mój program tak zrobił.

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Jeżeli to C++ to skorzystaj z biblioteki Qt oraz z QFileDialog.

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Jako argument funkcji system
podaj ścieżkę bezwzględną do programu albo dodaj lokalizację z Twoim programem do zmiennej systemowej PATH i wtedy odpal go np tak:
#include<iostream>
using namespace std;
int main(){
system("notepad.exe");
return 0;
}
... albo umieść exec, który chcesz uruchomić w tym samym katalogu co program, który ma go odpalić i wywołaj system
przez ścieżkę względną. Też zadziała.
- Rejestracja:ponad 9 lat
- Ostatnio:ponad 9 lat
- Postów:13
No niby się kompiluje ,ale nadal nie otwiera aplikacji.Tak poprawiłem kod:
#include "stdafx.h"
#include<iostream>
using namespace std;
int main(){
system("C:\\test\test.exe");
return 0;
}
Takie coś z output VisualStudio mi wyrzuca:
'open234.exe' (Win32): Loaded 'C:\Users\Michal\Desktop\Etapy\open234\Debug\open234.exe'. Symbols loaded.
'open234.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'open234.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'open234.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
'open234.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp120d.dll'. Cannot find or open the PDB file.
'open234.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr120d.dll'. Cannot find or open the PDB file.
Application "\??\C:\Windows\system32\cmd.exe" found in cache
The program '[4320] open234.exe' has exited with code 0 (0x0).
Jednak nadal się nie włącza tak jak powinno , testowałem na innym programie i działa bez zarzutów.Mój ,który jak normalnie włączę to działa ,a jak przez to to już nie.

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Po pierwsze skompiluj program do trybu release
jeżeli chcesz go używać poza IDE, bo będzie wymagać bibliotek do debugowania. Dodatkowo może się okazać, że program wymaga do działania dodatkowych innych bibliotek etc.
Użyj programu Dependency walker
żeby się przekonać jakich plików brakuje. Znajdź te brakujące zależności w wsadź do tego samego katalogu, w którym jest program. Dopiero wtedy uruchamiaj.

- Rejestracja:prawie 12 lat
- Ostatnio:około 12 godzin
Przed | Po
system("C:\\test\test.exe");
| system("C:\test\test.exe");
```cpp
"C:\\test\test.exe"
|
"C:\test\test.exe"
```cpp
"\test.exe"
|
"\test.exe"
```cpp
"\t"
|
"\"
Skopałeś ścieżkę.
Jak się przed tym uchronić na przyszłość, możesz spytać? Z pomocą przychodzi `raw string literal` z C++11!
```cpp
system(R"(C:\test\test.exe)"); //Niestety, kolorki się tutaj poddają
- Rejestracja:ponad 9 lat
- Ostatnio:ponad 9 lat
- Postów:13
Tak rzeczywiście głupi błąd z tym znaczkiem.Co do programu to go pobrałem ,ale nie wiem jak dalej się z nim obchodzić , bardzo proszę o krótką instrukcje.
Screen w załączniku.
- programik.jpg (125 KB) - ściągnięć: 112

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Najprościej: Dajesz File, Open i wskazujesz execa zrobionego w trybie release
.
Na żółto masz zaznaczone biblioteki, których brakuje do uruchomienia programu poza IDE:
- c409a6efc6.png (20 KB) - ściągnięć: 135
- Rejestracja:ponad 9 lat
- Ostatnio:ponad 9 lat
- Postów:13
Jak otworzyłem program, który ma za zadanie otwierać nie wyskoczył żaden pytajnik.W programie ,który chce otworzyć jest kilka pytajników (załącznik).
- biblioteki.jpg (158 KB) - ściągnięć: 157

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
No, bo czego ma brakować do programu, który wywołuje tylko system
i nic więcej nie robi? Wszystkie biblioteki są już w systemie operacyjnym i zależności potrzebne do programu są spełnione. Niczego nie brakuje. A rada na później: po prostu nie uruchamiaj programów z trybu debug
poza IDE, bo to mija się z celem. :)
PS: oczywiście wszystko też zależy od tego jak zlinkowane zostaną biblioteki. Program skompilowany do release
w VS nie potrzebuje żadnych zależności ale już skompilowany pod mingw
tak :) Czynników jest więc wiele jak widzisz.

Program skompilowany do release w VS nie potrzebuje żadnych zależności
potrzebuje, ale te siedzą w Windows\System32 dzięki paczkom Microsoft Visual C++ Redistributable


- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
- Zakomentuj polecenie
system
; - Skompiluj program do
release
; - Skopiuj tego execa na pulpit;
- Uruchom go;
- Jak nie ma błędów to nie potrzebujesz, żadnych bibliotek i oznacza to, że masz błąd w stringu w funkcji
system
Wszystko.

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
A powiedz czym się różni uruchomienie programu z cmd'ka od odpalenia do dwuklikiem? No, bo już nie wiem gdzie szukać Twojego problemu, a nikt tutaj nie jest jasnowidzem.
... chyba :)
- Rejestracja:ponad 9 lat
- Ostatnio:ponad 9 lat
- Postów:13
Dobra jest "OK". :) Dzięki. Mam pytanie jeszcze jedno. Jeśli są w programie biblioteki wczytane ,które nie pełnią żadnej funkcji to jest jakiś błąd dla kompilatora ,czy to w niczym nie przeszkadza ,a może jedynie pomóc ?
grzesiek51114Jednak nadal się nie włącza tak jak powinno , testowałem na innym programie i działa bez zarzutów.Mój ,który jak normalnie włączę to działa ,a jak przez to to już nie.
grzesiek51114