シーン:
プラグインとOA、オンラインオフィスシステムは、唯一のIEブラウザ、あなたがページを開く単語のオンライン版を使用することができますが、F12で開発者ツールは、要素を参照してくださいに失敗します。あなたはChromeブラウザで動作することはできません。
手動でアップロードファイルの実践は、次のとおりです。コンピュータ上の開いているWord文書、CTRL + Aは、CTRL + Cをコピーするために、すべてを選択し、次にペーストするページ、CTRL + Vを開きます。
また、そこにWebページ上にあり、入力要素を提出するが、幸いこの2つの要素が選択され、開発ツールで提出することができます。
思考:C#の言葉がすべてを選択し、クリップボードにコピーし、閉じ語、読ん; SHDocVw.InternetExplorer、ページ上で開いてフォーカス制御ワードとオープンIE、CTRL + V送信し、再フィル入力をして提出して提出します。
コード:
プライベート ボイドが記事ToolStripMenuItem_Click(作られたオブジェクト送信者、EventArgsのE) { この .WindowState = ; FormWindowState.Minimized // オープンディレクトリ・ワード文書 // 、戻り値の型があるのFileInfoファイルフォルダを取得する 文字列のパス= @ " \:IをMyNews " ; DirectoryInfoルート = 新しい新しいDirectoryInfo(パス) のFileInfo []ファイル = root.GetFiles(); Microsoft.Office.Interop.Word.Applicationアプリ = 新しい新しいMicrosoft.Office.Interop.Word.Application(); オブジェクトファイル= fnameに[ 0 ] .FullName; 文字列の fnamestr =ファイル[ 0 ] .nameの、 VARの DOC = app.Documents.Open(REFのFNAME); レンジレンジ = doc.Range(); // レンジ()が通過しない場合引数は、全範囲のドキュメントを取得する範囲 Range.Copyメソッド(); doc.close(); app.Quit(); アプリケーション = ヌル; System.Threading.Thread.Sleep(300 ); // プロセス-発行-文書タイプワードスイッチング SHDocVw.InternetExplorerのIE = 新しい新しいSHDocVw.InternetExplorerを(); オブジェクト空= 0 。 オブジェクトの URL = " http://192.168.132.80/docs/docs/DocAddExt.jsp?mainid=15&secid=1143&subid=49&topage=&showsubmit=1&prjid=&coworkid=&crmid=&hrmid=&docType=.doc&docsubject=&from=&userCategory=0&invalidationdate= " ; IE.Visibleは = 真; IE.Navigate2(REF URL、REF、空REF、空REF、空REF 空)。 System.Threading.Thread.Sleep(10000 ); // System.Windows.Forms.SendKeys。送信( "^ V"); //これは信頼できない、フォーカスを切り替えるコマンドを引き起こしているようです。 KC = KeyBordClick 新しい新KeyBordClick(); kc.KeyBordPaste(); // ファイル名に塗りつぶし fnamestr = fnamestr.Replace(" .docxの"、"" ); fnamestr = fnamestr.Replace(" .DOC "、"" ); ((IE.Document AS mshtml.HTMLDocument).getElementById(" DocSubject ")AS mshtml.HTMLInputElement).Valueの= fnamestr; System.Threading.Thread.Sleep(1000 )。 // 送信ボタンを見つける のvar btntsを=(IE.Document AS mshtml.HTMLDocument).getElementsByTagName(" ボタン" ); foreachの(mshtml.HTMLButtonElement btnt でbtnts) { IF(btnt.innerText == " サーバーに保存" ) { btnt .click(); ファイル[ 0 ] .Delete(); BREAK ; } } }
クラスKeyBordClick { [DLLIMPORT(" user32.dllの"、エントリーポイント= " keybd_event "、SetLastError = 真)] プライベート 静的 にextern ボイド keybd_event(キーBVK、バイト BSCAN、UINT dwFlagsパラメータ、UINT dwExtraInfo)。 const int型 KEYEVENTF_KEYUP = 0x02の。 const int型 KEYEVENTF_KEYDOWN = 0x00で、 // 相当于按下Ctrl + V、然后回车 公共 のボイド KeyBordPaste() { keybd_event(Keys.ControlKey、0、KEYEVENTF_KEYDOWN、0 ); keybd_event(Keys.V、0、0、0 ); keybd_event(Keys.ControlKey、0、KEYEVENTF_KEYUP、0 ); keybd_event(Keys.Enter、0、0、0 ); } }