Chromeによる C++でPOST送信するデータの簡単な取得方法

DevToolで

・「Network」をクリックします。
・「Record network log」の部分で、ここが赤くなっているかを確認します。黒のときはクリックすると赤になります。
・「Doc」をクリックします。「Name」の部分に現在アクセスしているページのファイルが表示されます。
・「Name」に表示されたファイル名をクリックします。右側にネットワークログを表示するボックスが表示されます。
・「Headers」「Preview」「Response」「Timing」という4つのタブが表示されますので「Headers」を選択します。デフォルトでは「Headers」が選択されているはずです。
「Headers」の中の一番下の「Form Data」の部分に、POSTで渡されたパラメータの内容が表示されます。
・ViewSorceをクリックすれば、エンコード済のコードになってくれるので便利

ネタ元

www.tsukimi.net

C# UIAutomationCondition でEdgeの操作

大雑把に言えばUIAutomationを使って、ほしい要素(エレメント)を探して取得して、操作する という感じ。

IUIAutomationConditionで探す要素を設定して
hogeElement.FindAll()でIUIAutomationConditionを指定して要素を探索。
見つかった要素が塊で取得できるのでループでバラしながら探す。
という流れ

・参照の追加でUIAutomationClientを追加
f:id:shikaku:20211005210155p:plain

・操作したい要素のConttoleTypeなど、情報を調べるには「Inspent」を使う
f:id:shikaku:20211005210351p:plain

...

// EdgeのアドレスバーのURL取得

int UIA_ControlTypePropertyId = 30003;
IUIAutomation uiAutomation = new CUIAutomation8();
IUIAutomationElement rootElement = uiAutomation.GetRootElement();
UIAutomationClient.IUIAutomationElement elmEdge;

string eURL = "";
{

    int UIA_WindowControlTypeId = 50032;

    IUIAutomationCondition condition =
        uiAutomation.CreatePropertyCondition(
            UIA_ControlTypePropertyId, UIA_WindowControlTypeId
        );

    UIAutomationClient.IUIAutomationElementArray aryWindowControls;
    aryWindowControls = rootElement.FindAll(TreeScope.TreeScope_Subtree, condition);
    elmEdge = null;
    for (int i = 0; i < aryWindowControls.Length; i++)
    {
        string name = aryWindowControls.GetElement(i).CurrentName;
        string classname = aryWindowControls.GetElement(i).CurrentClassName;
        name = name.ToLower();

        if (1 <= name.IndexOf("microsoft​ edge"))
        {

            elmEdge = aryWindowControls.GetElement(i);

            int UIA_EditControlTypeId = 50004;
            IUIAutomationCondition condition2 =
                uiAutomation.CreatePropertyCondition(
                    UIA_ControlTypePropertyId, UIA_EditControlTypeId
                );

            UIAutomationClient.IUIAutomationElementArray aryWindowControls2;
            aryWindowControls2 = elmEdge.FindAll(TreeScope.TreeScope_Subtree, condition2);

            for (int i2 = 0; i2 < aryWindowControls2.Length; i2++)
            {
                name = aryWindowControls2.GetElement(i2).CurrentName;
                if (name == "アドレスと検索バー")
                {
                    int UIA_ValueValuePropertyId = 30045;
                    eURL = aryWindowControls2.GetElement(i2).GetCurrentPropertyValue(UIA_ValueValuePropertyId);
                    break;
                }
            }

            break;
        }
    }
}

....


// Edgeの最後のタブを閉じる
int last_iptn = -1;
if (elmEdge != null)
{
    int UIA_ButtonControlTypeId = 50000;
    IUIAutomationCondition condition3 =
        uiAutomation.CreatePropertyCondition(
            UIA_ControlTypePropertyId, UIA_ButtonControlTypeId
        );

    UIAutomationClient.IUIAutomationElementArray aryWindowControls3;
    aryWindowControls3 = elmEdge.FindAll(TreeScope.TreeScope_Subtree, condition3);

    for (int i3 = 0; i3 < aryWindowControls3.Length; i3++)
    {
        string name = aryWindowControls3.GetElement(i3).CurrentName;
        if (name == "タブを閉じる")
        {
            last_iptn = i3;
        }
    }

    if (last_iptn != -1)
    {
        IUIAutomationInvokePattern iptn;
        int UIA_InvokePatternId = 10000;
        iptn = aryWindowControls3.GetElement(last_iptn).GetCurrentPattern(UIA_InvokePatternId);
        iptn.Invoke();
    }
}

wordpress メニューの「カスタムリンク」クリック時に新しいタブで開かせる

「外観」→「メニュー」
画面右上の「表示オプション」(オレンジ枠の部分)をクリックします。

f:id:shikaku:20210906093255p:plain

「リンクターゲット」にチェック
f:id:shikaku:20210906093305p:plain

カスタムリンクの項目に「リンクを新しいタブで開く」が増えるのでチェック
f:id:shikaku:20210906093622p:plain

ネタ元

www.tecking.org