Videoclip mit Standardanwendung öffnen lassen
-
Ja, pfuh, keine Ahnung.
Aber wie gesagt: nimmShellExecute
/ShellExecuteEx
.
-
Wenn eh Qt verwendet wird, dann gibt es auch was von Qt
QDesktopServices::openUrl
-
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
aber mir ist aufgefallen das Titel mit mehreren Punkten (z.B. "Dies ist ein ... Beispieltitel") ebenfalls nicht geöffnet werden. Gibt es dafür eine Erklärung?
#include <cstdlib> int main() { std::system("\"Dies ist ein ... Beispieltitel.jpg\""); }
tut bei mir genau was es soll.
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
Mir ist aufgefallen, das Dateien mit Umlauten im Titel nicht geöffnet werden können.
und
#include <cstdlib> int main() { std::system("\"Dies ist ein ... äh ... Beispieltitel.jpg\""); }
das auch.
-
Sehr interessant! Mal wieder so ein mysteriöses Phänomen. Sowas macht mich verrückt! Danke für die Mühe. Ich werde mal schauen ob ich es mit ShellExecute hinbekomme, ansonsten muss ich halt auf Umlaute und die pööhsen Punkte verzichten.
Aber mal ein anderes Thema zur Abwechslung:
Kann mir jemand verraten, wie ich ein Icon für das Desktop-Symbol meiner Anwendung setzen kann, so dass ich nicht immer dieses Standard Symbol auf dem Desktop sehe, sondern ein eigenes? Damit meine ich nicht das windowIcon, sondern welches man im Explorer sehen kann.Danke
-
@DerDaVinciKot Generell gilt: Eine Frage/ein Thema pro Thread und ein Thread pro Frage/Thema.
Shell Links - Creating a Shortcut and a Folder Shortcut to a File
IShellLinkA interface (shobjidl_core.h)
-
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
Kann mir jemand verraten, wie ich ein Icon für das Desktop-Symbol meiner Anwendung setzen kann
Wenns für die .exe ist: IIRC ist das Icon das für eine .exe angezeigt wird einfach die erste Icon-Resource die in der .exe enthalten ist. Oder war es die mit der niedrigsten ID? Weiss nimmer genau. Auf jeden Fall sollte es funktionieren wenn es die 1. Resource ist und du ID 1 verwendest.
Die genauen Regeln sollten sich aber relativ einfach ergoogeln lassen.
-
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
Sehr interessant! Mal wieder so ein mysteriöses Phänomen. Sowas macht mich verrückt!
Ich glaube ich weiß was los ist. Öffne mal das betreffende Source-File mit Notepad++ und check ob das im ANSI Encoding gespeichert ist.
-
@Swordfish Das mit den Umlauten könnte ich mir mit Encoding-Unterschieden erklären. Aber das mit den Punkten?
-
Ich habe folgendes der pro.Datei hinzugefügt:
win32{
RC_FILE = myApp_resource.rc
}und die resource.rc-Datei
IDI_ICON1 ICON DISCARDABLE "[...]\myApp\myappico.ico"
Nun erscheint aber folgende Fehlermeldung:
No rule to make target '../myApp/myApp_resource.rc', needed by 'release/myApp_resource_res.o'. Stop.Zum ANSI-Problem komme ich noch, sobald das Problem mit dem Icon weg ist, sonst kann ich nicht erstellen.
UPDATE:
So, endlich habe ich es mit dem Icon geschafft!!! Ich habe die .rc-Datei vom Release-Ordner in den "Normalen" Projektordner getan. Kann mir jemand erklären wie das zustande kommt? Ich dachte immer, wenn ich auf "Release" einstelle, muss alles im Release-Ordner sein.Wie erstellt man eigentlich die .rc-Datei? Ich weiß nicht wie ich das genau geschafft habe dass sie angelegt wird...
Zum ANSI-Problem: Wenn ich die mainwindow.cpp mit Notepad öffne, werden die Umlaute korrekt angezeigt. Somit sollte das Problem ausgeschlossen sein, oder?
-
Notepad hat soweit ich weiss UTF-8 auto-detection. Also verlass dich nicht darauf. Nimm einen Editor der dir anzeigen kann welches Encoding er für ein File verwendet - wie z.B. Notepad2.
-
Danke für den Hinweis! Ich habe mir nun Notepad2 heruntergeladen. Wie ermittel ich damit die Codierung?
-
Notepad2 hat im ganz unteren Bereich des Fensters eine Leiste wo z.B. Zeilen/Spaltennummer drinnen steht.
Diese Zeile hat mehrere Sektionen - und in der dritten Sektion steht z.B. "ANSI". Das ist das Encoding.Wobei die Unterscheidung ANSI vs. UTF-8 natürlich nur funktioniert wenn das File entweder einen BOM hat oder Umlaute o.Ä. vorkommen. Weil bei reinem ASCII Inhalt BOM-freies UTF-8 und ANSI ja 100% identisch sind.
-
OK danke. Also bei mir steht "UTF-8".
-
Das erklärt dann zumindest mal das Problem mit den Umlauten. Weil die halt in UTF-8 ganz anders aussehen als in z.B. CP1252 (was die übliche ANSI CodePage für Windows hierzulande ist).
Ein Weg das zu fixen wäre natürlich Unicode zu verwenden.
Erklärt aber immer noch nicht das Problem mit den "...".
-
@hustbaer sagte in Videoclip mit Standardanwendung öffnen lassen:
Das erklärt dann zumindest mal das Problem mit den Umlauten. Weil die halt in UTF-8 ganz anders aussehen als in z.B. CP1252 (was die übliche ANSI CodePage für Windows hierzulande ist).
Ein Weg das zu fixen wäre natürlich Unicode zu verwenden.
Erklärt aber immer noch nicht das Problem mit den "...".
Für die 3 Punkte gibt es auch ein eigenständiges Zeichen statt 3 einzelne Punkte "zeichen".
Da DerDaVinciKot Qt verwendet wiso dann direkt die WinAPI ansprechen. Denn Qt bietet via QDesktopServices::openUrl das gleiche an, was auch ShellExecute von der WinAPI anbietet
und da QDesktopServices::openUrl QString verwendet gibt es dann keine Probleme mit der Zeichenkodierung da QString UTF16 verwendet bzw. beim Aufruf der nativen funktion den string passend konvertiert
-
@hustbaer sagte in Videoclip mit Standardanwendung öffnen lassen:
Erklärt aber immer noch nicht das Problem mit den "...".
Schiebe ich auf die fehlenden Anführungszeichen.
@DerDaVinciKot Speichere dein Source-file als ANSI und
system()
wird mit vielen Zeichen funktionieren.
Aber wie andere schon lange sagen: Nimm nichtsystem()
sondern zB.ShellExecute()
das versteht auch UNICODE.
-
Danke für Eure Mühe!
Ich habes es jetzt mal mit QUrl versucht. Doch irgendwo stimmt was nicht. Es passiert nichts:
QDesktopServices::openUrl(QUrl(ApplikationPfad + "\\Movies\\testclip.mp4", QUrl::TolerantMode));
-
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
ApplikationPfad
Und was steht da drin? file:// ?
-
@DerDaVinciKot sagte in Videoclip mit Standardanwendung öffnen lassen:
"\Movies\testclip.mp4"
Die Pfade in einer URL sind mit /
-
QUrl::fromLocalFile
: Returns a QUrl representation of localFile, interpreted as a local file. This function accepts paths separated by slashes as well as the native separator for this platform.