背景 我正在创建应用程序以捕获屏幕并将屏幕截图粘贴到word文档中,而不是另一个。
技术部分 当我运行应用程序时,会打开一个word文档以及一个带有“Capture”按钮的表单。单击按钮捕获屏幕并打开一个窗口询问标题,然后将带有标题的屏幕截图粘贴到当前打开的文档doc中。
我的问题 当用户单击“捕获”按钮时,我想检查先前打开的文档是否仍然打开。如果文档未打开,我将提示用户打开一个新的空白文档。
我搜索了许多论坛和互联网,但大多数建议从当前正在运行的进程中获取文件名。 请注意,我的Word文档未保存,因此它的名称将类似于“文档1”等,这将是一种不好的检查方式。
我已粘贴下面的代码供参考。
任何输入都将受到赞赏。提前谢谢。
WordProcessing.cs
namespace WordProcessing
{
class MSWord
{
Word.Application wordApp = new Word.Application(); //Creates new Word Instance
public MSWord()
{
wordApp.Visible = true;
Word.Document oDoc = wordApp.Documents.Add(ref useDefaultValue, ref useDefaultValue, ref useDefaultValue, ref useDefaultValue);
}
}
}
Screencapture.cs
namespace Screencapture
{
public partial class form_capture : Form
{
MSWord word = new MSWord();
public void button1_Click(object sender, EventArgs e)
{
/* Here I want to check whether document opened by 'word' object is still open */
ScreenCapture screen = new ScreenCapture();
screen.CaptureScreenToFile("D:/image.png", System.Drawing.Imaging.ImageFormat.Png);
//Form to ask for caption
DataForm textarea = new DataForm();
textarea.ShowDialog();
textarea.Focus();
word.InsertText(DataForm.textarea_text);
word.InsertImage(@"D:\image.png");
}
}
}
PS:忽略任何语法错误或缺少函数定义。我已粘贴较短版本以便更好地理解。
答案 0 :(得分:0)
关注文档的尝试/捕获怎么样?
try
{
oDoc.Activate();
//or on the application
wordApp.Activate();
}
catch
{
//Open a new document or ask
Messagebox.Show("Please open a new Word Document");
}
答案 1 :(得分:0)
您可以尝试使用File.Open()
方法。如果文档是打开的,它应该为您提供一个例外,可以打印您的自定义提示:
FileStream stream = null;
bool isOpen = false;
try
{
stream = File.Open(@"DFilePath&Name",FileMode.Open, FileAccess.ReadWrite, FileShare.None);
}
catch(IOException)
{
isOpen = true;
//Show your prompt here.
}
finally
{
if (stream != null)
stream.Close();
}
if(!isOpen)
Process.Start(@"FilePath&Name");