none
どんな体系がよいか RRS feed

  • 質問

  • いつも質問で申し訳ありません。
    次のことをやりたいのですが、vc++expressだけで、あるいはNetflameworkであればできるでしょうか。すべてプログラムコントロールです(人手は介在しません)。
    ・特定のサイトのページを表示する
    ・ページ内のテキスト入力フィルードにテキストを入力する
    ・ページ内のログインボタンを押す
    ・ページ内のページ遷移を伴うタブ状のボタンを押す
    ・同様にいくつかのテキスト欄にテキストを入力する
    ・ページ内の決定ボタンを押す
    ・ええーと名前を忘れましたが、ページ内のボタンを押すと選択枝が現れ、それを選択する(dropdownmenu?)
    ・これらの動作タイミングと、選択条件は別途アプリのDDLの機能として実現し、ddlとこのアプリでプロセス間通信をおこなう。一応DDEが候補ですが、なにかOLEのようなものがよいかこれから検討。

    などです。今までの調査で、postするhtmlを編集して、それをポストするような方法の提案もありました。(これは面倒そう)
    なるべく簡単でわかりやすいのよいのですが、どういった体系を用いるのがよいでしょうか。
    ・VC++expressだけでできる。
    ・Netflamworkの機能を使う。能書きによると、Netflamworkもvc++で扱えるそうですね。

    2012年7月24日 10:12

回答

すべての返信

  • DDLとはなんでしょうか? データ定義言語 (DDL) ステートメント (Transact-SQL)ぐらいしか思い当りませんが…文脈からは該当しないように思います。もしかしてDLLの誤字ですか? 誤字が多過ぎることが他人とコミュニケーションできなくなることを理解してください。

    • Netflamework → .NET Framework
    • ソルーション → ソリューション

    DDEとかOLEとかのキーワードも出てきていますがやりたいこととどう結びつくのかわかりません。また「人手は介在しません」とのことなのにドロップダウンを選択するとかも意味が分かりません。人手が介在しないのなら画面表示は不要で、データ処理だけ行えばいいのでは?

    VC++でできるかどうか質問されていますが、別スレッドを読む限り質問者さんはC++言語の基本的な構文(メンバー関数の呼出し方)すら理解できておらずかなり敷居が高いと思います。
    例えるならば、ひらがな漢字があやふやにもかかわらず「私にも小論文の解き方を教えてください」と言っているようなものです。

    2012年7月25日 0:23
  • 誤字のご指摘はその通りです。f

    >VC++でできるかどうか質問されていますが、別スレッドを読む限り質問者さんはC++言語の基本的な構文(メンバー関数の呼出し方)すら理解できておらずかなり敷居が高いと思います。

    ただ一つの構文の間違いで全体を判断されるのは残念です。

    小生はやりたいことがどのような手法でできるのか、判断しかねるので、方針の参考にさせていただきたいのです。

    >例えるならば、ひらがな漢字があやふやにもかかわらず「私にも小論文の解き方を教えてください」と言っているようなものです。

    ずいぶんと失礼ですね。別スレッドににしましたのは、問題をできるだけ絞込み、適切なスレッドだろうと思ったので、NETframeworkのスレッドでお尋ねしました。


    • 編集済み sige2 2012年7月25日 6:30
    2012年7月25日 6:30
  • 個人的な感想に近くなりますが、さきほどまで件の情報を得るため、本屋にて、NETframeworkやwinAPIの本を探しに行きましたが、なかなか近い情報が得られませんでした。個別の機能がしりたいのでポイントはNETframeworkならではの関数(クラス)がポイントでしたが、全般的な説明のものしかありませんでした。開発プラットホームを何にするかが決められません。確実にはUWSCにせざるを得ないかなと思いつつあります。でも、UWSCでは面白くないので、Cでやりたいところです。

    ネット検索ではなかなか希望の情報がえられませんでしたので、皆さんのご経験を踏まえた意見をお伺いしたく質問させていただきました。

    不可能に近いか、かなり難しいことを、調べて試して、できないことが分るのは避けたいのです(勝手ではありますが)。ご提案頂いたその方法ができるかできないかは、自分の技量に相談することになります。
    • 編集済み sige2 2012年7月25日 7:03
    2012年7月25日 6:47
  • 一つ憶えておきましょう。

    「ネットフレームワーク」ではありません。

    「ドットネットフレームワーク」です。

    2012年7月25日 6:50
  • ご丁寧にどうも。

    2012年7月25日 8:17
  • その後調べて、TCppWebBrowserとTComInterface(vc++ではCppWebBrowserとComInterface?)をつかえば、できそうに思っているところです。

    佐祐理さん

    >また「人手は介在しません」とのことなのにドロップダウンを選択するとかも意味が分かりません。人手が介在しないのなら画面表示は不要で、データ処理だけ行えばいいのでは?

    dropdownmenuはまたまた用語の間違いで、pulldownmenuでした。 選択肢がこの形式が使用されることがあるということです。

    人手は介在しないけれど、人の代わりにプログラムが色んな操作をする動きを確認するために画面表示が必要なのです。



    • 編集済み sige2 2012年7月26日 1:21
    2012年7月26日 1:17
  • まず、ご質問の内容と少し異なる命題に変更させてもらい、
    「Webページへの操作をプログラムから自動的に行う」
    とすると、

    1.あらゆるWebページを対象とした場合は、「マウスとキーボードのエミュレーションを行う」
     方法が唯一で最終的な結論になります。
     その他の方法では人間の操作の代替はできないと考えられるからです。

    2.次に特定のWebページを対象とした場合は、そのWebページの仕様に依存します。
     これは、当たり前ですね。

    3.最後にID、パスワードの入力による、特定サービスへのWeb経由の自動ログオン
     を想定している場合も、「その特定のログオンページの仕様に依存」します。
     つまり、2.ですね。しかし、セキュリティを重要視するため、プログラムからの
     自動ログオンは排除する傾向になっているため、確実に動作を行うには最終的に
     1.の方法以外に選択の余地は無いと考えられます。

    さて、以上の想定が正しいと仮定した場合で、2.は対象Webページの仕様が特定できない
    限り、結論を出すのが不可能なので排除すると、その他については次の結論が導けます。

    4.必要なWin32SDKの関数が利用できる、あらゆる処理系で実装可能。

    ということですね。ただし、

    5.だからといって、プログラムは人間の操作を完全に真似ることはできない。
    6.特に3.の自動ログオンについては一般には試みてはいけない事象であり、
     場合によっては犯罪になる。

    ということをお忘れなく。

    2012年7月26日 2:03
  • いつも有益なコメントありがとうございます。

    命題はまさにそれです。もう少し再定義しますと、特定のWebページを対象として、「マウスとキーボードのエミュレーションを行う」ということになります。それには、やはりWin32SDKの関数が利用できる処理系ならば何でもよいということになるのですね。どちらかといえば小生はWIN32sdkのようなプリミティブな関数が好みです。最近のいろんな便利な仕組みの方がかえって戸惑うのではないかと思います。

    そうすると次の問題は、

    ・win32sdkの関数仕様について、今のところよい資料が見つからないこと--上記目的に必要なものだけでよいのに、見つけることができません。

    ・対象ページを別途IEで開いたページにすればよいのですが、できれば、CppWebBrowserなどのように自分のウィンド内で開いたページにたいしてマウスとキーボードのエミュレーションをwin32SDKでできるのかどうか。

    なのです。その後別掲示板で教わったところ、TCppWebBrowserとTComInterfaseを使えばできそうな感じをつかんだところです。最終確認はできていません。(内容をまだ十分理解していないので調査中)

    >特に3.の自動ログオンについては一般には試みてはいけない事象であり、
     場合によっては犯罪になる。

    えそんなことがあるのですか。サイトが禁止しているならともかく。 実際の目的はここで述べる必要はないのですが、あるサイトに対する自動執行システムで、人手ではとても行えない頻度(やってやれないことはないが)で実行するあくまで自分用なのです。執行条件は別プログラムで算出して、それに従い執行するというものです。

    2012年7月26日 3:02
  • 6.特に3.の自動ログオンについては一般には試みてはいけない事象であり、

     場合によっては犯罪になる。

    この部分、sge2 さんもご心配なさっているのでもう少しご説明願えますか?

    試みてはいけないとは法的にですか?

    Webページの操作は詰まるところリクエストとレスポンスのやりとりですが、ブラウザーのやっていることをまねるプログラムを作った場合、これを動かすのはやってはいけないことですか?

    それと、犯罪になるのはどのような場合ですか?
    • 編集済み galaco 2012年7月26日 3:23
    2012年7月26日 3:21
  • 知っている範囲で最も単純なものは「人が操作してログオンすること」
    が規定され、表現は異なりますが、プログラムによる自動ログオンが
    禁止されていました。とある社内サービスも自動ログオンを許諾されたID以外には
    同様の規定があります。
    規約違反で告訴されて有罪が確定すれば
    一般的には犯罪とカウントされます。
    自動ログオンのプログラムを予定しているなら
     1.技術的可能性
    の他に、
     2.適法性
    も調べでおくきかもしれません。
    もちろん対象のサービスによってこの規定が異なることはご存知の通りです。


    2012年7月26日 5:13
  • 一般的にIDとパスワードによるセキュリティは人の記憶をシステムの
    一部として利用した本人確認を行っています。従って、それが、
    明示されていなくても、システムの所有者が「人が入力することが当然の前提」
    だとの意見を盾に訴えた場合は裁判で認められる可能性があります。
    従って、そのような可能性のあるシステムの一部を覆すプログラムの構築は、
    社会通念上控えるべき行為だと考えています。

    もちろん、SNS等へのログオンの様に、あってなきがごときセキュリティが
    それに該当するかどうかを調べ上げたわけではないということも、
    断っておきます。

    2012年7月26日 5:37
  • 仮にidとpwの自動ログインが問題になるなら、今回の場合は、始めだけなので、パスすることは考えられます。

    自動ログインが問題になるのは、ハッカーが、IDとpwをプログラムで生成してかたぱっしから試す場合などではないでしょうか。自分が権利を持っているIDなら問題ないと思うような気がします。目的が間違いないようにすばやくやるために自動化するのでしょうから。

    で本題の、マウスとキーのエミュレーションを行うwin32apiの関数は何でしょうか、ご存知あれば教えてください。検索は難しいです。名前さえわかれば、機能は調べられると思うのですが・・・・・。

    自動処理が禁止されているのは、Googleの検索結果などを網羅的に取得するために自動的に発行することとして、記載がありますね。もちろんこんな目的ではありません。

    • 編集済み sige2 2012年7月26日 10:55
    2012年7月26日 10:52
  • どちらかにまとめませんか?
    帰結するところは同じところになりそうなので、情報を分散させるよりはどちらかに決めていただいた方がよいかと思っています。
    最終的に .NET や C++ Express のどちらかに合わないとなった場合でも、後で Microsoft のフォーラムオペレーターに移動してもらえばよいと思います。

    // 主題に関してはもう一方で近い話をしているのでそちらに書きました。
    // 自動操作に関しては、相手サーバーが貧弱だと、サーバーをダウンさせてしまい、業務妨害に問われる
    // 可能性もありますのでご留意を。

    2012年7月26日 13:56
    モデレータ
  • >「人が操作してログオンすること」
    >が規定され、

    これが規定されている場合があるのですね。参考になりました。ありがとうございます。

    2012年7月27日 3:41
  • ログオン画面にも様々なものがあります。
    その仕様によってはマウスとキーのエミュレーションでは
    自動化できないものもあります。
    それをご納得いただいた上でマウスとキーのエミュレートを行うときに
    使用する可能性の高い関数を以下にリストアップします。
     SetCursorPos
     SetKeyboardState
     keybd_event
     SendInput
     mouse_event
    これでもうまくいかない場合は、当該ウインドウのコールバックを差し替える
    必要がありますが、この方法はセキュリティソフトやOSから妨害される可能性が
    ありますので、その場合はあきらめてください。
    2012年7月27日 6:09
  • あちこち投稿してすみませんでした。それでは、本題についてはこちらを終わりにさせていただきます。
    • 回答としてマーク 山本春海 2012年8月6日 7:08
    2012年7月27日 6:11