C # Open bestand met standaardtoepassing en parameters

De meest eenvoudige manier om een ​​bestand te openen met de standaardtoepassing is:

System.Diagnostics.Process.Start(@"c:\myPDF.pdf");

Ik zou echter graag willen weten of er een manier is om parameters in te stellen op de standaardtoepassing, omdat ik een PDF wil openen in een bepaald paginanummer.

Ik weet hoe ik het moet doen om een ​​nieuw proces te maken en de parameters in te stellen, maar op deze manier moet ik het pad van de applicatie aangeven, en ik zou graag een draagbare toepassing willen hebben en niet het pad van de Toepassing Elke keer dat ik de toepassing op een andere computer gebruik. Mijn idee is dat ik verwacht dat de computer de PDF-lezer heeft geïnstalleerd en alleen maar zeg wat te openen.

bedankt.


Antwoord 1, Autoriteit 100%

Als u wilt dat het bestand wordt geopend met de standaardtoepassing, bedoel ik zonder Acrobat of Reader op te geven, kunt u het bestand niet op de opgegeven pagina openen.

Aan de andere kant, als u in orde bent met het opgeven van Acrobat of Reader, blijf dan lezen:


U kunt het doen zonder het volledige Acrobat-pad te vertellen, zoals dit:

using Process myProcess = new Process();    
myProcess.StartInfo.FileName = "acroRd32.exe"; //not the full application path
myProcess.StartInfo.Arguments = "/A \"page=2=OpenActions\" C:\\example.pdf";
myProcess.Start();

Als u niet wilt dat de PDF met lezer is geopend, maar met Acrobat, kilt u de tweede regel als volgt:

myProcess.StartInfo.FileName = "Acrobat.exe";

U kunt het register zoeken om de standaardtoepassing te identificeren om PDF-bestanden te openen en vervolgens de bestandsnaam te definiëren op de Startinfo van uw proces dienovereenkomstig.

Volg deze vraag voor meer informatie over het doen: Het vinden van de standaardtoepassing voor het openen van een bepaald bestandstype op Windows


Antwoord 2, Autoriteit 84%

Dit moet dichtbij zijn!

public static void OpenWithDefaultProgram(string path)
{
    using Process fileopener = new Process();
    fileopener.StartInfo.FileName = "explorer";
    fileopener.StartInfo.Arguments = "\"" + path + "\"";
    fileopener.Start();
}

Antwoord 3, Autoriteit 14%

Ik heb de VB-code geconverteerd in het blogbericht dat wordt gekoppeld door xsl naar c # en gewijzigd IT een beetje:

public static bool TryGetRegisteredApplication(
                     string extension, out string registeredApp)
{
    string extensionId = GetClassesRootKeyDefaultValue(extension);
    if (extensionId == null)
    {
        registeredApp = null;
        return false;
    }
    string openCommand = GetClassesRootKeyDefaultValue(
            Path.Combine(new[] {extensionId, "shell", "open", "command"}));
    if (openCommand == null)
    {
        registeredApp = null;
        return false;
    }
    registeredApp = openCommand
                     .Replace("%1", string.Empty)
                     .Replace("\"", string.Empty)
                     .Trim();
    return true;
}
private static string GetClassesRootKeyDefaultValue(string keyPath)
{
    using (var key = Registry.ClassesRoot.OpenSubKey(keyPath))
    {
        if (key == null)
        {
            return null;
        }
        var defaultValue = key.GetValue(null);
        if (defaultValue == null)
        {
            return null;
        }
        return defaultValue.ToString();
    }
}

bewerken – dit is onbetrouwbaar. Zie De standaardtoepassing vinden voor het openen van een bepaald bestandstype op Windows .


Antwoord 4, Autoriteit 3%

U kunt proberen met

Process process = new Process();
process.StartInfo.FileName = "yourProgram.exe";
process.StartInfo.Arguments = ..... //your parameters
process.Start();

Antwoord 5

Voeg instellingen toe onder Eigenschappen voor het project en gebruik ze op deze manier heeft u schone en gemakkelijk configureerbare instellingen die als standaard kunnen worden geconfigureerd

Hoe kan ik: een nieuwe instelling maken tijdens de ontwerptijd

Update: na opmerkingen hieronder

  1. Rechts + klik op project
  2. Nieuw item toevoegen
  3. Onder Visual C#-items -> Algemeen
  4. Selecteer instellingenbestand

Other episodes