Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Aprire un file con il mio form C#
Forum - C# / VB.NET - Aprire un file con il mio form C#

Avatar
pbe (Normal User)
Pro


Messaggi: 131
Iscritto: 24/05/2014

Segnala al moderatore
Postato alle 15:31
Martedì, 27/01/2015
La mia domanda è:
se ho un semplicissimo form in C# con al suo interno un TextBox / RichTextBox ed un file con un'estensione scelta da me (es *.pb) sul pc, come faccio dopo avere fatto click destro sul file > apri con... ad inserire nella casella di testo l'esatto contenuto di testo del file aperto?

Per il momento non si tratta di associare quell'estensione al programma, può essere una cosa anche temporanea, ma non riesco a capire come fare.

Spero di essere stato abbastanza chiaro.
Aspetto risposte prima possibile.


Per me programmare è costruire il futuro: codice dopo codice.

http://benzocode.altervista.org (in costruzione)
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 17:59
Martedì, 27/01/2015
Devi andare al program.cs
e non nel form1.cs

alla voce  


Codice sorgente - presumibilmente C# / VB.NET

  1. [STAThread]
  2.         static void Main()
  3.         {
  4.             Application.EnableVisualStyles();
  5.             Application.SetCompatibleTextRenderingDefault(false);
  6.             Application.Run(new Main());
  7.         }




aggiungi come argomento al main un array di stringhe


Codice sorgente - presumibilmente C# / VB.NET

  1. static void Main(string[] args)
  2. {
  3.  
  4.  
  5. }




Dal momento che viene eseguito il doppio click (nel caso l'estensione sia associata al programma) passa
come riferimento  " NomeApplicazione.exe %1"

il %1 contiene il percorso da dove e stato lanciato il file o aperto con "Apri Con..."


quindi basta recuperare il valore in main


Codice sorgente - presumibilmente C# / VB.NET

  1. [STAThread]
  2.         static void Main(string[] args)
  3.         {
  4.            
  5.  
  6.           Application.EnableVisualStyles();
  7.             Application.SetCompatibleTextRenderingDefault(false);
  8.  
  9.             try
  10.             {
  11.                 //Se l'applicazione e stata avviata da un file
  12.                 //args[0] contiene la directory da dove e stato lanciato il file
  13.                 MessageBox.Show(args[0].ToString());
  14.                 Application.Run(new Form1());
  15.  
  16.             }
  17.             catch
  18.             {
  19.                 //Altrimenti avvia normalmente il programma
  20.                 Application.Run(new Form1());
  21.             }
  22. }





PM Quote
Avatar
pbe (Normal User)
Pro


Messaggi: 131
Iscritto: 24/05/2014

Segnala al moderatore
Postato alle 23:20
Martedì, 27/01/2015
Ah ok, ho capito. Avevo visto una guida simile ma al contrario di come dici te mi faceva eseguire il costruttore Form1() in due modi. Uno con Form1(args[0]) e l'altro normale. Comunque mi sembrava la soluzione peggiore.

Ora è tutto più chiaro. Grazie mille.
Domani provo ad implementare il codice e vi farò sapere.

Grazie ancora.


Per me programmare è costruire il futuro: codice dopo codice.

http://benzocode.altervista.org (in costruzione)
PM Quote
Avatar
pbe (Normal User)
Pro


Messaggi: 131
Iscritto: 24/05/2014

Segnala al moderatore
Postato alle 12:07
Giovedì, 29/01/2015
Dopo aver sistemato questo aspetto (grazie del consiglio) ora stavo puntando a fare l'associazione automatica della mia estensione .pb con il mio programma Text.exe.

Ho visto un tutorial e ho riadattato il codice, solamente che (sebbene non mi dia alcun errore), non vedo cambiamenti, per esempio l'icona non viene caricata.

Ecco il codice completo del file Program.cs:
Codice sorgente - presumibilmente C#

  1. using System;
  2. using System.Linq;
  3. using System.Windows.Forms;
  4. using System.Runtime.InteropServices;
  5. using System.Collections.Generic;
  6. using Microsoft.Win32;
  7.  
  8. namespace Text
  9. {
  10.         internal sealed class Program
  11.         {
  12.                 [DllImport("Shell32.dll", CharSet = CharSet.Auto, SetLastError=true)]
  13.                 public static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);
  14.                
  15.                 [STAThread]
  16.                 private static void Main(string[] args)
  17.                 {
  18.                         if(!IsAssociated())
  19.                         {
  20.                                
  21.                         }
  22.                         else
  23.                         {
  24.                                 Associate();
  25.                         }
  26.                         Application.EnableVisualStyles();
  27.             Application.SetCompatibleTextRenderingDefault(false);
  28.  
  29.             try
  30.             {
  31.                 Application.Run(new MainForm(args[0].ToString()));
  32.  
  33.             }
  34.             catch
  35.             {
  36.                 Application.Run(new MainForm());
  37.             }
  38.                        
  39.                 }
  40.                
  41.                 public static bool IsAssociated()
  42.                 {
  43.                         return(Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pb", false) == null);
  44.                 }
  45.                 public static void Associate()
  46.                 {
  47.                         RegistryKey fileReg = Registry.CurrentUser.CreateSubKey("Software\\Classes\\.pb");
  48.                         RegistryKey AppReg = Registry.CurrentUser.CreateSubKey("Software\\Classes\\Applications\\Text.exe");
  49.                         RegistryKey AppAssoc =   Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.pb");
  50.                        
  51.                         fileReg.CreateSubKey("DefaultIcon").SetValue("","C:\\Users\\utente\\Pictures\\setup.ico");
  52.                         fileReg.CreateSubKey("PerceivedType").SetValue("","Text");
  53.                        
  54.                         AppReg.CreateSubKey("shell\\open\\command").SetValue("","\""+Application.ExecutablePath + "\" %1");
  55.                         AppReg.CreateSubKey("shell\\edit\\command").SetValue("","\""+Application.ExecutablePath + "\" %1");
  56.                         AppReg.CreateSubKey("DefaultIcon").SetValue("","C:\\Users\\utente\\Pictures\\setup.ico");
  57.                        
  58.                         AppAssoc.CreateSubKey("UserChoice").SetValue("Progid","Applications\\Text.exe");
  59.                         SHChangeNotify(0x08000000, 0x0000, IntPtr.Zero, IntPtr.Zero);
  60.                 }
  61.                
  62.         }
  63. }



Sto cercando di trovare un errore ma per ora non ci sto riuscendo.


Per me programmare è costruire il futuro: codice dopo codice.

http://benzocode.altervista.org (in costruzione)
PM Quote
Avatar
pbe (Normal User)
Pro


Messaggi: 131
Iscritto: 24/05/2014

Segnala al moderatore
Postato alle 12:10
Giovedì, 29/01/2015
Per esempio non capisco i link come "Software\\...", "Applications\\...".


Per me programmare è costruire il futuro: codice dopo codice.

http://benzocode.altervista.org (in costruzione)
PM Quote
Avatar
pbe (Normal User)
Pro


Messaggi: 131
Iscritto: 24/05/2014

Segnala al moderatore
Postato alle 12:42
Giovedì, 29/01/2015
Adesso l'icona mi funziona, dato che avevo associato prima il file .pb al blocco note.
Però creando una nuova estensione e se non facendo "Apri con...  ---> text.exe" non mi si apre automaticamente nel programma. Come fare?

Ultima modifica effettuata da pbe il 29/01/2015 alle 13:13


Per me programmare è costruire il futuro: codice dopo codice.

http://benzocode.altervista.org (in costruzione)
PM Quote
Avatar
Thejuster (Member)
Guru^2


Messaggi: 1704
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 8:36
Venerdì, 30/01/2015
Se non ricordo male alla chiave shell
E dove passi il %1 come comando va scritto open.

Comunque se devi associare dei files al tuo programma
Lo puoi fare anche tramite un installer. Risparmiando molto tempo.

Ultima modifica effettuata da Thejuster il 30/01/2015 alle 8:51


PM Quote
Avatar
pbe (Normal User)
Pro


Messaggi: 131
Iscritto: 24/05/2014

Segnala al moderatore
Postato alle 7:10
Sabato, 31/01/2015
Ok, come faccio a creare un installer e ad associarci la mia estensione?

Ultima modifica effettuata da pbe il 31/01/2015 alle 7:13


Per me programmare è costruire il futuro: codice dopo codice.

http://benzocode.altervista.org (in costruzione)
PM Quote
Avatar
pbe (Normal User)
Pro


Messaggi: 131
Iscritto: 24/05/2014

Segnala al moderatore
Postato alle 22:32
Sabato, 31/01/2015
Comunque per me il problema non sta nel creare un installer o no, ma è che non riesco ad associare automaticamente la mia estensione con il mio programma.

Questo è il link del video - tutorial che ho seguito:
http://www.youtube.com/watch?v=XtYobuVvcFE&feature=youtube ...

Guardatelo e provate a vedere come fare.
Grazie mille


Per me programmare è costruire il futuro: codice dopo codice.

http://benzocode.altervista.org (in costruzione)
PM Quote