Autor Beitrag
Michi101200
Hält's aus hier
Beiträge: 3
Erhaltene Danke: 1



BeitragVerfasst: Di 30.11.10 10:59 
Hallo,

ich wollte gerne Screenshots über DirectX erstellen.
Testweise wollte ich, dass alle 5 Sekunden ein Screen erstellt wird. Dieser wird dann in einer BMP-Datei gespeichert.

Der Code sieht wie folgt aus:

Zitat:

PresentParameters presParam = new PresentParameters();
presParam.Windowed = true;
presParam.SwapEffect = SwapEffect.Discard;

Device device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presParam);

DisplayMode dm = device.DisplayMode;
i = i + 1;

Surface mScreen = device.CreateOffscreenPlainSurface(dm.Width, dm.Height, Format.A8R8G8B8, Pool.Scratch);

device.GetFrontBufferData(0, mScreen);

SurfaceLoader.Save("C:\\Bild" + i.ToString() + ".bmp", ImageFileFormat.Bmp, mScreen);

mScreen.Dispose();



Bei mir auf dem Rechner klappt auch alles wunderbar. Dann wollte ich dies Programm unter Visual Studio veröffentlichen (Menü Erstellen/... veröffentlichen) und auf einen anderen Rechner installieren.
Nach der Installation, also beim Programmstart, kommt ein Ausnahmefehler.
Die Meldung ist leider sehr dürftig denn es steht nur: "Unbehandelter Ausnahmefehler in der Anwendung"
Unter Detail erscheint dann die Meldung:

************** Ausnahmetext **************
System.IO.FileNotFoundException: Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E)
bei AppScreenshot.Form1.timer1_Tick_1(Object sender, EventArgs e)
bei System.Windows.Forms.Timer.OnTick(EventArgs e)
bei System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Leider komm ich da nicht weiter.

Diese Fehlermeldung kommt an folgende Stelle im Code:

Zitat:

SurfaceLoader.Save("C:\\Bild" + i.ToString() + ".bmp", ImageFileFormat.Bmp, mScreen);


Ich bitte da um Hilfe

Gruß
Michi
Michi101200 Threadstarter
Hält's aus hier
Beiträge: 3
Erhaltene Danke: 1



BeitragVerfasst: Mi 01.12.10 09:18 
Hat keiner eine Idee?

Das Ziel bei der ganzen Sache ist, dass Screenshots über DirectX erstellt werden. Ich weiß dazu gibt es sehr viel Dokumentationen im Internet. Dies läuft auch bei mir auf dem Rechner. Aber ich schaffe es nicht, dass es auf einen anderen Rechner läuft.
Ich hab auch Verweise zu den DirectX Dlls z.B. DirectX.dll, Direct3D.dll, Direct3DX.dll.

Die Dlls habe ich miteingeschlossen und werden mitkopiert.

Wenn keiner eine Idee hat: kennt dann jemand ein Programm dass schon Screenshots über DirectX erstellt aber dass nicht installiert werden muss. Am besten wenn ich das Programm mit einen entsprechenden Parameter startet. In diesem Parameter gebe ich dann den Filename an.
ujr
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 102
Erhaltene Danke: 12



BeitragVerfasst: Fr 17.12.10 11:22 
user profile iconMichi101200 hat folgendes geschrieben Zum zitierten Posting springen:

Ich hab auch Verweise zu den DirectX Dlls z.B. DirectX.dll, Direct3D.dll, Direct3DX.dll.

Die Dlls habe ich miteingeschlossen und werden mitkopiert.


Vielleicht mal auf dem Zielrechner die aktuelle DirectX-Version installieren (inkl. Managed DirectX). Möglicherweise müssen auch die C++ Laufzeitbibliotheken (vcredist) in einer aktuellen Version (vs2005, vs2008, vs2010?) installiert werden.

Außerdem könnte man mit dem "Process Monitor" analysieren, wie die Datei heißt, die nicht gefunden werden kann.