2

ユーザーが現在見ている共有ポイントの Web を検出しようとしています。1 つの方法として、ブラウザーから URL を読み取り、それらを sharepoint ソリューションへの参照 URL と比較しようとすることが考えられます。IE と Firefox の両方で機能するソリューションをまだ見つけることができませんでした。

アイデアは、URL を収集して比較を行う小さな C# アプリを作成することです。

ティア

4

4 に答える 4

2

Win32 API 関数 FindWindow を使用して、非常にハックで破損しやすい方法でこれを行うことができます。

Windows Calculator の実行中のインスタンスを検索し、その中の編集フィールドの値を取得する次の C++ の例。C# でも同様のことができるはずです。免責事項: このコードがコンパイルされることを実際に確認していません。申し訳ありません。:)

float GetCalcResult(void)
{
    float retval = 0.0f;

    HWND calc= FindWindow("SciCalc", "Calculator");
    if (calc == NULL) {
        calc= FindWindow("Calc", "Calculator");
    }
    if (calc == NULL) {
        MessageBox(NULL, "calculator not found", "Error", MB_OK);
        return 0.0f;
    }
    HWND calcEdit = FindWindowEx(calc, 0, "Edit", NULL);
    if (calcEdit == NULL) {
        MessageBox(NULL, "error finding calc edit box", "Error", MB_OK);
        return 0.0f;
    }

    long len = SendMessage(calcEdit, WM_GETTEXTLENGTH, 0, 0) + 1;
    char* temp = (char*) malloc(len);
    SendMessage(calcEdit, WM_GETTEXT, len, (LPARAM) temp);
    retval = atof(temp);
    free(temp);

    return retval;
}

FindWindow と FindWindowEx で使用する適切なパラメーターを見つけるには、Visual Studio ツール Spy++ を使用して、ブラウザー ウィンドウの実行中のインスタンスを調べます。申し訳ありませんが、手元に Web ブラウザー用のコード サンプルはありませんが、可能であるはずです。ソリューションは Windows OS 固有であり、Web ブラウザーの将来のバージョンで UI アーキテクチャが変更されると、ソリューションが機能しなくなる可能性があることに注意してください。

この方法を使用してアドレス バーから URL を持ち上げることは、明らかに現在のタブでのみ機能します。ユーザー入力をシミュレートしてタブを循環させるなど、本当にトリッキーなことをしない限り、これがすべてのタブでどのように機能するかわかりません。これは非常に煩わしく、ユーザーは自分の入力を中断してアプリケーションを簡単に台無しにする可能性がありますが、自動化されたテスト スクリプトのように、無人で実行されるものを作成している場合はうまくいく可能性があります。その場合は、AutoItなどの他のツールを調べてください。

このアドバイスはすべて、私がかつて書いたブログ投稿から言い換えたものです。幸運を!

于 2008-10-15T22:51:36.620 に答える
2

Javascript で ActiveX シェル アプリケーション オブジェクトを使用すると、IE でかなり簡単に実行できます。以下はサンプルコードです。

function GetURL()
{
 var oShell = new ActiveXObject('shell.application');
 var oColl = oShell.Windows();
 for (var i = 0;i<oColl.count;i++)
 {
  try
  {
   var Title = oColl(i).document.title;
   if (Title.indexOf('DesiredTitle') != -1)
   {
    alert ('Title-'+oColl(i).document.title);
    alert ('Location-'+oColl(i).location);
   }
  }
  catch (err)
  {
   alert (err);
  }
 }
}

私はまだFirefoxで方法を見つけようとしています。

于 2012-10-29T12:47:15.853 に答える
1

そのような答えを見つけることはまずありません。最新のブラウザはすべて、ユーザーに大きなプライバシー リスクをもたらすため、ページ上の JavaScript がそのような情報にアクセスする機能を制限しています。

于 2008-10-15T22:34:09.137 に答える
0

私の頭のてっぺんから、ビルトインの Firefox 言語の使用を検討するかもしれません (それが何と呼ばれているのかわかりません)。あなたが話していることを正確に行うためのメカニズムを提供すると確信しています。そうしないと、デリシャスなどのために作成されたプラグインが機能しません。

IE に関しては、C++ で行うか、このためのマネージ ラッパーを見つける必要があります。IE プラグインの作り方はよくわかりませんが、深く掘り下げれば何かが見つかるはずです。

乾杯!

于 2008-10-20T15:12:24.847 に答える