Lanciare windows application da una webform

di il
9 risposte

Lanciare windows application da una webform

Ciao a tutti!!!
Ho creato una windows application che, quando lanciata, crea un documento word di stampaunione e lo salva in un path predefinito.
Se uso direttamente la windows application funziona tutto perfettamente.

Ho quindi creato una web form nella mia web application con un pulsante che mi lancia la windows application.Quest'ultima, da quello che ho capito, funziona in background, e infatti nel task manager vedo il processo attivo con utente Network service.
Il problema è che non mi salva il documento word, e ho notato che winword non è presente tra i processi.
Forse ci sono problemi a lanciare word?
Quello che vorrei ottenere è che l'utente lanci la windows application sul server e crei il documento che poi gli renderò disponibile tramite un link.

Grazie dell'aiuto!!!

9 Risposte

  • Re: Lanciare windows application da una webform

    Hai pensato di trasformare la tua winapp in una dll x la webapp?
    In questa maniera la richiameresti dalla tua web application, gli faresti eseguire il tuo metodo e saresti a posto....

    Se non erro il giro funziona cosi...

    Premesse:
    Client A != Server .NET

    Il client accede al server, pigia un bottone e tenta di avviare una applicazione.
    Il path di esecuzione di questa applicazione cos è?
    \\servername\servershare\apppath\winapp.exe oppure C:\miafolder\winapp.exe ?

    X me la tua webform tenta di far eseguire al client la tua windows application... cmq rimando a Toki l ardua sentenza :) è piu esperto di me su .NET (anche se abbiamo lavorato a quel progetto fico!!! ti ricordi vero la Console?????)...

    Ale

    ICQ@Home # 47938486
    ICQ@Work # 246829394 [ NOT AVAIABLE NOW ]
  • Re: Lanciare windows application da una webform

    L'applicazione la lancio così:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    Dim myProcess As New System.Diagnostics.Process()


    ' Get the path that stores user documents.
    Dim myDocumentsPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal)

    myProcess.StartInfo.FileName = "C:\Inetpub\wwwroot\CRGA\application\bin\windowsapplication2.exe"

    myProcess.StartInfo.UseShellExecute = False


    myProcess.StartInfo.RedirectStandardOutput = True

    myProcess.StartInfo.CreateNoWindow = False
    myProcess.StartInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Maximized

    myProcess.Start()

    End Sub



    Per quanto riguarda il creare la dll...non mi sembra una brutta idea, ma non so da che parte cominciare...
  • Re: Lanciare windows application da una webform

    Ho sostituito il path dell'applicazione con quello per il server

    myProcess.StartInfo.FileName = "\\SISERVER\wwwroot$\prove\application\bin\windowsapplication2.exe"

    e nell'applicazione ho cambiato, allo stesso modo, il path per il salvataggio

    wrdApp.ActiveDocument.SaveAs("\\SISERVER\wwwroot$\prove\moduli\modulo1.doc")

    Il risultato è che adesso non vedo l'applicazione in esecuzione nemmeno sul task manager
  • Re: Lanciare windows application da una webform

    Ho provato a creare la dll...premetto che è la prima volta che faccio una cosa del genere, quindi siate buoni:

    Imports System.Web.Services

    <WebService(Namespace:="modulo")> _
    Public Class modulo
    Inherits System.Web.Services.WebService

    #Region " Web Services Designer Generated Code "

    Public Sub New()
    MyBase.New()

    'This call is required by the Web Services Designer.
    InitializeComponent()

    'Add your own initialization code after the InitializeComponent() call

    End Sub

    'Required by the Web Services Designer
    Private components As System.ComponentModel.IContainer

    'NOTE: The following procedure is required by the Web Services Designer
    'It can be modified using the Web Services Designer.
    'Do not modify it using the code editor.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    components = New System.ComponentModel.Container()
    End Sub

    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
    'CODEGEN: This procedure is required by the Web Services Designer
    'Do not modify it using the code editor.
    If disposing Then
    If Not (components Is Nothing) Then
    components.Dispose()
    End If
    End If
    MyBase.Dispose(disposing)
    End Sub

    #End Region
    <WebMethod()> Public Function funcmoduli(ByVal id As Integer)

    Dim wrdApp As Word.ApplicationClass
    Dim wrdDoc As Word._Document
    Dim wrdDoc1 As Word._Document
    Dim indice As Integer
    indice = id

    Dim wrdSelection As Word.Selection
    Dim wrdMailMerge As Word.MailMerge
    Dim wrdMergeFields As Word.MailMergeFields

    Dim StrToAdd As String

    ' Create an instance of Word and make it visible.
    wrdApp = CreateObject("Word.Application")

    wrdApp.Visible = True


    ' Add a new document.

    wrdDoc = wrdApp.Documents.Open("\\SISERVER\wwwroot$\prove\moduli\Primo campo.doc")

    wrdDoc.Select()

    wrdSelection = wrdApp.Selection()

    wrdMailMerge = wrdDoc.MailMerge()

    ' Perform mail merge.


    wrdMailMerge.Execute(True)


    wrdApp.ActiveDocument.SaveAs("\\SISERVER\wwwroot$\prove\moduli\modulo" & id & ".doc")

    wrdDoc.Close(False)

    ' Release References.
    wrdSelection = Nothing
    wrdMailMerge = Nothing
    wrdMergeFields = Nothing
    wrdDoc = Nothing
    wrdApp = Nothing
    End Function

    End Class


    Ho compilato e creato la dll. Dopo di che ho provato a creare un button in una webform creando un nuovo oggetto modulo:

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    Dim modulo1 As modulo

    modulo1.funcmoduli(9)

    End Sub

    Risultato: Object reference not set to an instance of an object

    AIUTOOOO!!!
  • Re: Lanciare windows application da una webform

    Toki................... DOVE SEI!?!?!?!??!?!?!?!?!?!?!

    Ale

    PS: a smettere di programmare sto perdendo colpi :(


    ICQ@Home # 47938486
    ICQ@Work # 246829394 [ NOT AVAIABLE NOW ]
  • Re: Lanciare windows application da una webform

    Devi istanziare la classe:
    Dim modulo1 As new modulo

    Saluti
    Marko
  • Re: Lanciare windows application da una webform

    Mi dà lo stesso errore
  • Re: Lanciare windows application da una webform

    Sorry, ho dimenticato di dirti che devi usare la keyword new anche in alcune parti della tua funzione funcmoduli (nella Dll) in modo da istanziare anche il l'oggetto di Word.
    Saluti
  • Re: Lanciare windows application da una webform

    Mmmh... a parte che
    Dim wrdApp As New Word.ApplicationClass()

    non saprei dove aggiungere new
Devi accedere o registrarti per scrivere nel forum
9 risposte