hallo,
mein Programm sollte jede Sekunde einen Screenshot machen und den Text zurückliefern. Das Problem ist, dass nach ein paar Durchläufen eine AccessViolationException ausgelöst wird. Habt ihr eine Idee wie ich das verhindern kann?
private void getText()
{
bmpScreenshot = new Bitmap(182, 335, PixelFormat.Format32bppArgb);
gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(1181, 391, 0, 0, new Size(182, 335), CopyPixelOperation.SourceCopy);
bmpScreenshot.Save(@"C:\hallo.bmp", ImageFormat.Bmp);
bmpScreenshot.Dispose();
gfxScreenshot.Dispose();
MODI.Document md = new MODI.Document();
md.Create(@"C:\hallo.bmp");
md.OCR(MODI.MiLANGUAGES.miLANG_ENGLISH, true, true); //hier wird der Fehler ausgelöst
MODI.Image image = (MODI.Image)md.Images[0];
md.Close(false);
MODI.Layout layout = image.Layout;
ocrtext = layout.Text;
}
Hallo!
Mein erster Gedanke war, dass die Meldung evtl. daher kommt, dass die angegebene Date erst bei diesem Aufruf geöffnet wird und evtl. noch gesperrt ist, allerdings sollte die Meldung dann eigentlich eine andere sein, außer sie wird abgefangen und durch AccessViolationException ersetzt.
Ansonsten fehlt vielleicht für MODI noch ein Dispose o.ä. am Ende, um bestimmte Ressourcen wieder freizugeben?
Nobody is perfect. I'm sad, i'm not nobody 🙁