De paramter is onjuist

Status
Niet open voor verdere reacties.

Apokalypse

Gebruiker
Lid geworden
26 aug 2008
Berichten
18
Hallo allemaal,

Omdat het snelkoppeling programma(zie deze link http://www.helpmij.nl/forum/showthread.php?t=377985) niet lukte ben ik maar overgestapt op C#. Nu heb ik precies hetzelfde gecreeerd alleen dan doormiddel van C#. Alles werkt als ik hem gewoon normaal debug en run. Als ik het programma heb gepublisht, het opstart en ik op een knop druk krijg ik de foutmelding dat de parameter onjuist is. Bij sommige knoppen werkt de link weer wel. Het .net framework is gewoon bijgevoegd bij de installatie.

Hieronder staat de code weergegeven:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;
//Made by Kenny Dielemans&Mytylschool Roosendaal
namespace MultiGames
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\Lekker Weertje Herfst\LekkerH.exe");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\HowieReken\MATH.exe");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\Leermiddelen\startscherm.exe");
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\spelen met woorden\SMWL.exe");
        }

        private void button5_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\Zeggen wat je ziet\Zeggen wat je ziet.exe");
        }

        private void button6_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\Koekeloerhier\start.exe");
        }

        private void button7_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\LJW\LJW\LJW.exe");
        }

        private void button8_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\Lekker Weertje Winter\LekkerW.exe");
        }

        private void button9_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\Lekker Weertje Lente\LWLente.exe");
        }

        private void button10_Click(object sender, EventArgs e)
        {
            Process.Start(@"B:\MyBee\MyBee.exe");
        }
    }
}
De paths naar de spellen toe kloppen gewoon.
Ik moet er wel bijzeggen dat de spellen op een netwerkschijf staan.
Maar dit is geen probleem als ik de code build, alleen als ik het als gepublishte bestand open.

Ik hoop dat iemand mij kan helpen.
 
Dat kan mogelijk problemen geven omdat niet elke gebruiker de drive op dezelfde letter heeft gemapt. Ben je zeker dat alle gebruikers de drive op dezelfde letter gemapt hebben?
 
Ja, dat is zo ingesteld als het goed is.
Maar als ik sommige spellen wel gewoon kan openen en andere niet, dan ligt het toch niet daar aan?
Of wel?
 
Neen dan kan dat inderdaad het probleem niet zijn maar de 'invalid parameter' error kan er wel door veroorzaakt worden.
Hebben je programma's bepaalde parameters nodig bij het opstarten?
Misschien kan je eens proberen om effectief een parameter mee te geven:
Code:
Process.Start("progr.exe",null); 
of
Process.Start("progr.exe",0);

succes
 
Neen dan kan dat inderdaad het probleem niet zijn maar de 'invalid parameter' error kan er wel door veroorzaakt worden.
Hebben je programma's bepaalde parameters nodig bij het opstarten?
Misschien kan je eens proberen om effectief een parameter mee te geven:
Code:
Process.Start("progr.exe",null); 
of
Process.Start("progr.exe",0);

succes
Ik heb het geprobeerd alleen ik krijg weer dezelfde foutmelding.
Hieronder de log van de foutmelding:
Code:
Zie het einde van dit bericht voor meer informatie over het aanroepen 
van JIT-foutopsporing (Just In Time) in plaats van dit dialoogvenster.

************** Tekst van uitzondering **************
System.ComponentModel.Win32Exception: De parameter is onjuist
   bij System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
   bij System.Diagnostics.Process.Start()
   bij System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   bij System.Diagnostics.Process.Start(String fileName, String arguments)
   bij MultiGames.Form1.button1_Click(Object sender, EventArgs e)
   bij System.Windows.Forms.Control.OnClick(EventArgs e)
   bij System.Windows.Forms.Button.OnClick(EventArgs e)
   bij System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   bij System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   bij System.Windows.Forms.Control.WndProc(Message& m)
   bij System.Windows.Forms.ButtonBase.WndProc(Message& m)
   bij System.Windows.Forms.Button.WndProc(Message& m)
   bij System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   bij System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   bij System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Geladen assembly's **************
mscorlib
    Assembly-versie: 2.0.0.0
    Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
MultiGames
    Assembly-versie: 1.0.0.0
    Win32-versie: 1.0.0.0
    CodeBase: file:///C:/Documents%20and%20Settings/administrator.LEERLING/Local%20Settings/Apps/2.0/8OEEMX6C.LBK/LA622M6B.HQJ/mult..tion_b0552037a18a4ab1_0001.0000_9357d9a88c91f276/MultiGames.exe
----------------------------------------
System.Windows.Forms
    Assembly-versie: 2.0.0.0
    Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly-versie: 2.0.0.0
    Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly-versie: 2.0.0.0
    Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Windows.Forms.resources
    Assembly-versie: 2.0.0.0
    Win32-versie: 2.0.50727.42 (RTM.050727-4200)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_nl_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
mscorlib.resources
    Assembly-versie: 2.0.0.0
    Win32-versie: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------

************** JIT-foutopsporing **************
Als u JIT-foutopsporing wilt inschakelen, moet in het configuratiebestand voor deze
toepassing of computer (machine.config) de waarde
jitDebugging in het gedeelte system.windows.forms zijn ingesteld.
De toepassing moet ook zijn gecompileerd terwijl foutopsporing
was ingeschakeld.

Bijvoorbeeld:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Wanneer JIT-foutopsporing is ingeschakeld, worden onverwerkte uitzonderingen
naar het JIT-foutopsporingsprogramma gestuurd dat op de computer is geregistreerd
en worden niet door dit dialoogvenster verwerkt.

Bedankt voor alle moeite.
 
Deze error komt typisch voor als het programma een applicatie wil starten waarvan het path niet gevonden kan worden. Probeer de errors eens op te vangen in je programma zelf door een exception handling in te bouwen rond je process start.

Code:
try
            {
                System.Diagnostics.Process myProc = new System.Diagnostics.Process();
                myProc.StartInfo.FileName = @"C:\programma.exe"; 
                myProc.Start();    //Start the application and assign it to the process component.    
            }
            catch (Win32Exception w)
            {
                MessageBox.Show(w.Message);
                MessageBox.Show(w.ToString());
            }

Publish, voer uit en plak de output van de 2 messageboxen even hier.

Fouten hierop kunnen wijzen op het niet vinden van het bestand maar ook op de afwezigheid van permissies om dat bestand te open.

Succes en ik ben benieuw naar de output :)
 
Deze error komt typisch voor als het programma een applicatie wil starten waarvan het path niet gevonden kan worden. Probeer de errors eens op te vangen in je programma zelf door een exception handling in te bouwen rond je process start.

Code:
try
            {
                System.Diagnostics.Process myProc = new System.Diagnostics.Process();
                myProc.StartInfo.FileName = @"C:\programma.exe"; 
                myProc.Start();    //Start the application and assign it to the process component.    
            }
            catch (Win32Exception w)
            {
                MessageBox.Show(w.Message);
                MessageBox.Show(w.ToString());
            }

Publish, voer uit en plak de output van de 2 messageboxen even hier.

Fouten hierop kunnen wijzen op het niet vinden van het bestand maar ook op de afwezigheid van permissies om dat bestand te open.

Succes en ik ben benieuw naar de output :)
Ok ik krijg bij de eerste messagebox de parameter is onjuist en bij de 2e
Code:
System.ComponentModel.Win32Exception: de parameter is onjuist.
  bij System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
  bij System Diagnostics.Process.Start()
 bij Multigames.Form1.button1_Click(Object sender, EventArgs e)
Volgens mij duidt het dus inderdaad op dat hij het path niet kan vinden terwijl ik zowel de build als de publish allebei op dezelfde pc uitvoer.
Bij de build vindt hij alles en bij de publish maar 2.
 
Ok dat had ik nu net niet verwacht. Als he station niet gevonden kan worden zou de eerste messagebox moeten geven : "Het systeem kan het opgegeven station niet vinden". En als je progr niet bestaat zou dat: "Het systeem kan het opgegeven bestand niet vinden' moeten zijn.

Ben je zeker dat je de juiste exception hebt geimplementeerd?
 
Dat weet ik heel zeker.
Kan het niet zo zijn dat hij een bepaalde component mist b.v een hogere versie van het .net framework?
 
Ik kan je wel vertellen dat de process klasse niet ondersteund wordt in .net 1.0 maar ik ga er vanuit dat alle computers de laatste versie (of op zijn minst een recente versie groter of gelijk aan 2.0), klop dit?
 
Tsja ik heb zowel de build als de publish beide op mijn eigen pc gecheckt en die heeft minimaal .net 2.0.
 
Sorry voor de late reactie (inactiviteit) maar ik zie niet in waar het probleem kan zitten. Je doet alles correct en ik kan met de beste wil van de wereld je fout niet reproduceren. Misschien dat je best eens op de fora van MSDN je vraag stelt, hopelijk kunnen ze je daar verder helpen.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan