Ctrl- A+ Ctrl-Cを使用してシミュレートする方法はkeybd_event
?
Webブラウザフォームでctrl a + ctrl cをシミュレートして、コンテンツ全体をクリップボードにコピーしているためです。SendKeys.SendWait を使用しましたが、コンテンツ全体をコピーしていません!
Ctrl- A+ Ctrl-Cを使用してシミュレートする方法はkeybd_event
?
Webブラウザフォームでctrl a + ctrl cをシミュレートして、コンテンツ全体をクリップボードにコピーしているためです。SendKeys.SendWait を使用しましたが、コンテンツ全体をコピーしていません!
これはうまくいくはずです
[DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_KEYDOWN = 0x0000; // New definition
public const int KEYEVENTF_EXTENDEDKEY = 0x0001; //Key down flag
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
public const int VK_LCONTROL = 0xA2; //Left Control key code
public const int A = 0x41; //A key code
public const int C = 0x43; //C key code
public static void PressKeys()
{
// Hold Control down and press A
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYDOWN, 0);
keybd_event(A, 0, KEYEVENTF_KEYDOWN, 0);
keybd_event(A, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);
// Hold Control down and press C
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYDOWN, 0);
keybd_event(C, 0, KEYEVENTF_KEYDOWN, 0);
keybd_event(C, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);
}
Cntrl-A + Cntrl-C イベントを起動できますよね? しかし、何らかの理由ですべての Web ページのテキストをクリップボードにコピーしていませんか?
Cntrl-A + Cntrl-C イベントの実行についてはよくわかりません。また、何をしようとしているのかについても明確ではありませんが、最善を尽くして、すべてのテキストを取得するものを思いつきました。 Webページから、ボタンクリックイベントからクリップボードにコピーします...(明らかに、ur Cntrl-A + Cntrl-Cを使用する必要があります)。また、デバッグの目的で、クリップボードのテキストを .txt ファイルに入れて、再確認できるようにします。
HTML Agility Pack も使用しています。http://htmlagilitypack.codeplex.com/から取得できます。
コード
private void btnClip_Click(object sender, EventArgs e)
{
string address = "http://animalrights.about.com/";
string text = "";
// Retrieve resource as a stream
Stream data = client.OpenRead(new Uri(address)); //client here is a WebClient
//create document
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.Load(data);
//receive all the text fields
foreach (HtmlNode node in document.DocumentNode.SelectNodes("//child::p"))
{
text += node.InnerText + "\n\n";
}
Clipboard.SetText(text);
string path = @"C:\Users\David\Documents\Visual Studio 2012\Projects\CopyToClipBoard\CopyToClipBoard\bin\MyTest.txt";
// Delete the file if it exists.
if (File.Exists(path))
{
File.Delete(path);
}
// Create the file.
using (FileStream fs = File.Create(path, 1024))
{
Byte[] info = new UTF8Encoding(true).GetBytes(text);
// Add some information to the file.
fs.Write(info, 0, info.Length);
}
//destroy data object
data.Close();
data.Dispose();
}
メモ帳を開いてファイルを確認する