Question

J'essaie d'utiliser ShellExecute . ouvrir un fichier dans Excel. Je lisais des informations sur la fonction sur les forums MSDN et j'ai trouvé les informations suivantes sur le descripteur, qui constitue le premier paramètre:

" hwnd [in] Un descripteur de la fenêtre du propriétaire utilisé pour afficher une interface utilisateur ou des messages d'erreur. Cette valeur peut être NULL si l'opération n'est pas associée à une fenêtre. "

J'ai également entendu parler de ce descripteur, appelé "handle de la fenêtre parente". Qu'est-ce que la fenêtre parent / propriétaire? Comme vous le voyez ci-dessous, j'utilise NULL pour le handle, mais comme l'opération est effectivement associée à une fenêtre, j'ai probablement besoin d'un handle, mais je ne sais pas quoi utiliser pour le handle.

ShellExecute(NULL, "open" ,"Excel.exe", 
    "C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls", 
    NULL, SW_SHOWNORMAL);
Était-ce utile?

La solution

Il s'agit de généralement de 0

.
  

hwnd: fenêtre parente qui recevra une boîte de message possible. Ce paramètre est généralement 0.

Il fait référence à la fenêtre de niveau supérieur: la fenêtre que vous ouvrez n’a aucun parent et constitue la fenêtre principale de l’application en cours d’exécution.

Lorsque vous passez d'une application à une autre (ALT-TAB), vous affichez la fenêtre de niveau supérieur suivante (l'application suivante avec un descripteur parent égal à 0) dans l'ordre z (par exemple).

Bien entendu, le parent de votre application ne peut pas être la fenêtre du bureau elle-même :

  

Si vous créez une fenêtre enfant dont le parent est GetDesktopWindow (), votre fenêtre est maintenant collée à la fenêtre du bureau. Si votre fenêtre appelle ensuite quelque chose comme MessageBox (), il s’agit d’un dialogue modal, puis les règles ci-dessus s’appliquent, le bureau est désactivé et la machine est grillée.

Pour le chemin, je vous conseillerais les guillemets doubles entourant les guillemets simples: " '...' "

"'C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls'"

Pourrait également fonctionner (non testé) avec des guillemets doubles: " " " ... " " "

"""C:\\Documents and Settings\\Lab1\\My Documents\\Test.xls"""

, comme illustré par ce fil .

En fait, comme mentionné dans votre question par Andy et par Mesidin , et dans Manuel de fonction ShellExecute , vous pouvez ouvrir le fichier et indiquer son chemin d'accès en paramètre.

ShellExecute( NULL, "open", 
              "Test.xls", "C:\\Documents and Settings\\Lab1\\My Documents\\", 
              NULL, SW_SHOWNORMAL);

Cela signifie qu'Excel est l'application par défaut permettant d'ouvrir les fichiers d'extension .xls.

Autres conseils

Lorsque vous le décrivez comme étant le "descripteur de la fenêtre parente", cela signifie que c'est la fenêtre qui sera la fenêtre parente de l'interface utilisateur que la fonction choisira d'afficher. Le descripteur que vous passez peut être ou non déjà le parent d'une autre fenêtre au moment où vous appelez ShellExecute , mais cela n'a pas d'importance.

Pourquoi utilisez-vous spécifiquement ShellExecuting Excel? S'ils ont OpenOffice.org, ils sont cassés - vous devriez vraiment invoquer le " Ouvrir " Dans le fichier de feuille de calcul, vous n'avez pas besoin de coder en dur dans le fichier "Excel". nom, c’est à cela que sert ShellExecute.

Existe-t-il une raison spécifique pour laquelle vous utilisez ShellExecute?

Vous pouvez ouvrir un fichier xls en utilisant [System.Diagnostics.] Process.Start [nom du fichier]

Je m'excuse, je n'ai pas regardé les tags & amp; supposons que vous utilisez .net

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top