パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

コンソール出力を直接メモ帳へ書き込み」記事へのコメント

  • Autohotkeyとか全く知らんけど、 Altコード [wikipedia.org]で解決するしかないかね?
    #4216253 [srad.jp]的解決法の方が外乱に強いので個人的には好きだけど。

    Send{Raw}の{Raw}が付いてる理由は、{Raw}が無いと、パイプに入って来る{}やら記号でAltキー等のメタキーが効いちゃうとかその辺の理由。
    多バイト非対応なのは、Send~は内部的に仮想キーコード [microsoft.com]をSendInput [microsoft.com]で送る仕様なんだろうね。
    この場合、プログラムが人間の代わりにキーボード叩いているだけなので、キーボードに無い文字はそのまま送れない=多バイト不可って事になる。
    ただし、左Altキー+テンキー(VK_NUMPAD0~9)で文字コードを入力する事で、多バイトもIME抜きで直接入れられる。(前

    • by Anonymous Coward

      時間が出来たので、サンプルコード。
      知らん言語で、言語リファレンスもまともに見てないのでもっと良い書き方があるとか、
      実際に動かしてないので動くかどうかしらんが書き換え候補張っときます。

      {
          SendInput {Raw}%PipeText%
          PipeText =
      }

      を下記のように。
      {
          Loop, Parse, PipeText
          {
              AscCode := Asc( %A_LoopField% )
              SendInput {ASC %AscCode%}
          }
          PipeText =
      }

      スラドに空白が多いと怒られたから2タブになってます。

      キーボードにある文字も展開してるので処理時間が超伸びるし、
      Altキーなど

      • 試行錯誤してたが無理な気がしてきた。

                {
                    Loop, Parse, PipeText
                    {
                        AscCode := Asc(A_LoopField)
                        SendInput % AscCode
                    }
                    PipeText =
                }

        としてみたが意図した出力が得られなかった。どうも

        Loop, Parse, PipeText

        が8バイト毎に切り出してるっぽくて「あ」が33400(0x82a0)じゃなくて130,160(0x82,0xa0)で出力される。

                {
                    array:=StrSplit(PipeText)
                    For index, element in array
                    {
                        AscCode := Asc(element)
                        SendInput % AscCode
                    }
                    PipeText =
                }

        Loop,Parseの代わりにStrSplitを使っても同じだった。

        親コメント

人生unstable -- あるハッカー

処理中...