Halloj. Kan du inte bara skapa en acrord32.bat som loggar hur den anropas. Samma princip kan göras med ett program. Jag testade lite med följande kod: du kan inte mata hela strängen rakt upp och ner i Process.Start(string), (vilket jag antar att du gör) utan du måste skicka argumenten skilt, Som Simon säger, ändra till den här koden: Har precis gjort det. Nu funkar det fint.. Mange takk! :)Avlyssna applikation, är det möjligt?
Jag har en applikation som vi köpt in av ett företag som tillverkar lagersystem.
Denna applikation skriver ut Acrobatfiler via anrop (wshell) som ser ut som följer:
<code>
AcroRd32 /t C:\PDFer\badabimbadabom.pdf
</code>
Jag misstänker att det finns något problem i deras anrop för utskrifterna men det
dementeras bestämt, finns det något sätt att "avlyssna" de kommandom som
applikationen skickar via wshell till AcroRd32 och sen lagra dem i en vanlig textfil
en rad per anrop??
Något borde väl gå o snickra ihop kan man ju hoppas, jag har en kund modell global
som flåsar i nacken ang. detta lilla problem och jag vet inte riktigt hur jag ska få ordning
på detta. Men någon form av loggning kan ju iallafall utesluta eller bekräfta mina misstankar.
//JohannesSv: Avlyssna applikation, är det möjligt?
Sv: Avlyssna applikation, är det möjligt?
VB:<code>MsgBox(Command)</code>
VB.NET (inte .NET-sättet att göra det på men det var inte så noga nu...):<code>Messagebox.Show(Microsoft.VisualBasic.Command)</code>
Döp programmet till AcroRd32.exe och byt ut original-filen mot din.
ThomasSv:Avlyssna applikation, är det möjligt?
<code>
Dim appruncmd As String = Microsoft.VisualBasic.Command
If IO.Directory.Exists(IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) + "\Loggar") = False Then
IO.Directory.CreateDirectory(IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) + "\Loggar")
End If
Dim sw As New StreamWriter(IO.Path.GetDirectoryName(Reflection.Assembly.GetExecutingAssembly.Location) + "\Loggar\applog.txt")
sw.BaseStream.Seek(0, System.IO.SeekOrigin.End)
sw.WriteLine(Now & " -- " & appruncmd)
sw.Flush()
sw.Close()
System.Diagnostics.Process.Start("C:\Program\Adobe\Reader 8.0\Reader\AcroRd32.exe " & appruncmd)
Application.Exit()
</code>
och sen i körrutan (Ctrl+R) så skriver jag:
<code>
C:\testapp.exe /t C:\PDFer\blabla.pdf
</code>
(ja jag har en fil som heter blabla.pdf) men då får jag ett fel som säger:
<code>
Information om att aktivera JIT-felsökning i stället för den
här dialogrutan finns i slutet av det här meddelandet.
************** Undantagstext **************
System.ComponentModel.Win32Exception: Det går inte att hitta filen
vid System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
vid System.Diagnostics.Process.Start()
vid System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
vid System.Diagnostics.Process.Start(String fileName)
vid TestApp.Form1.Form1_Load(Object sender, EventArgs e)
vid System.EventHandler.Invoke(Object sender, EventArgs e)
vid System.Windows.Forms.Form.OnLoad(EventArgs e)
vid System.Windows.Forms.Form.OnCreateControl()
vid System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
vid System.Windows.Forms.Control.CreateControl()
vid System.Windows.Forms.Control.WmShowWindow(Message& m)
vid System.Windows.Forms.Control.WndProc(Message& m)
vid System.Windows.Forms.ScrollableControl.WndProc(Message& m)
vid System.Windows.Forms.ContainerControl.WndProc(Message& m)
vid System.Windows.Forms.Form.WmShowWindow(Message& m)
vid System.Windows.Forms.Form.WndProc(Message& m)
vid System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
vid System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
vid System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Inlästa sammansättningar **************
mscorlib
Sammansättningsversion: 2.0.0.0
Win32-version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
TestApp
Sammansättningsversion: 1.0.0.0
Win32-version: 1.0.0.0
CodeBase: file:///c:/testapp.exe
----------------------------------------
Microsoft.VisualBasic
Sammansättningsversion: 8.0.0.0
Win32-version: 8.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Sammansättningsversion: 2.0.0.0
Win32-version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
Sammansättningsversion: 2.0.0.0
Win32-version: 2.0.50727.198 (QFE.050727-1900)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Sammansättningsversion: 2.0.0.0
Win32-version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Sammansättningsversion: 2.0.0.0
Win32-version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Sammansättningsversion: 2.0.0.0
Win32-version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Runtime.Remoting
Sammansättningsversion: 2.0.0.0
Win32-version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
mscorlib.resources
Sammansättningsversion: 2.0.0.0
Win32-version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
System.Windows.Forms.resources
Sammansättningsversion: 2.0.0.0
Win32-version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_sv_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
************** JIT-felsökning **************
För att aktivera JIT-felsökning (just-in-time ) måste .config-filen för det här
tillämpningsprogrammet eller datorn (machine.config) ha
jitDebugging-värdet angivet i avsnittet system.windows.forms.
Tillämpningsprogrammet måste också vara kompilerat med felsökning
aktiverat.
Till exempel:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
När JIT-felsökning är aktiverad kommer alla undantag som inte hanteras
att skickas till JIT-felsökaren som är registrerad på datorn
snarare än att hanteras av den här dialogrutan.
</code>
Varpå jag svarar med att säga "brööl, fan och hans moster!!!"
Vad är det nu som är fel? Om jag kör den utan /t C:\PDFer\blabla.pdf så öppnas Adobe Reader som den ska, men inte om jag slänger på tilläggen.
//JohannesSv: Avlyssna applikation, är det möjligt?
antingen via Process.Start(string, string), eller Process.Start(ProcessStartInfo) (och där ProcessStartInfo.Arguments)Sv:Avlyssna applikation, är det möjligt?
<code>
System.Diagnostics.Process.Start("C:\Program\Adobe\Reader 8.0\Reader\AcroRd32.exe", appruncmd)
</code>
ThomasSv: Avlyssna applikation, är det möjligt?