約 2,543,001 件
https://w.atwiki.jp/kumikomi-yitjc/pages/118.html
開発ツールを用いたプログラム作成の手順を以下に示す。 プロジェクトの生成(AVR Studio) プログラム開発の単位をプロジェクトと呼ぶ。新規にプログラム開発を行う際は、必ずプロジェクトを定義する必要がある。 コーディング(AVR Studio) テキストエディタを用いて、ソースコードの入力を行う。 ビルド(or コンパイル、AVR Studio及びWinAVR) 作成したソースコードをビルドし、ATMEGA32U4用の実行形式を作成する。 WinAVRについては、ビルド時にAVRStudioから自動的に呼び出されるので、ユーザは意識する必要はない。 ダウンロード(Flip) フラッシュメモリへの書き込み 実行(DaVinci32u) マイコンボード上での実行 以下に、詳細を示す。 1.プロジェクトの生成 AVR Studioを用いてプログラム開発を行う際、その開発の単位をプロジェクトと呼ぶ。プロジェクトに含まれるのは、 ソースコード(C言語) シミュレーション・データ 実行形式 各種の設定 などである。開発を行い際は、必ずプロジェクトを生成し、順次、コーディングなどを行ってゆく。 以下、プロジェクトの生成手順について説明する。 ■ AVR Studioの起動 Windowsメニューから、「Atmel AVR Tools」 → 「AVR Studio 4」の順で選択する。 ■プロジェクトの作成 AVR Studioが起動すると、以下のメニューが表示される。新規にプロジェクトを作成する場合は「New Project」ボタンを クリックする。 以下の開発ツールの選択・プロジェクト名入力のメニューが表示されるので、以下の項目について入力する。 Project type → AVR GCC Project name → プロジェクトの名称 (英数字。全角不可) Location → Z embedded_1\sources (プロジェクトを保存するフォルダ名。全角不可) デバッグ環境、デバイスの選択を促されるので、以下の様に入力する。 Debug platform → AVR Simulator Device → ATmega32U4 以上でプロジェクトの設定は終了。「Finish」ボタンを押すと、ソースコードの入力画面が表示される。 2.コーディング C言語によるプログラムの入力(コーディング)を行う。ソースコード入力画面にC言語によるソースを入力する。 3.ビルド(コンパイル) ビルドを行うには「Build」→「Build」を選択する。 コンパイルエラーが無ければ、Buildウインドの最終行に「Build succeeded with 0 Warnings...」と表示される。 何らかのエラーがある場合は、図のようにエラー発生個所の行数:カラム数とエラーの内容が表示されるので、 内容を確認して修正すること。 4.ダウンロード ビルドによって作成された実行形式(バイナリ・ファイル)をAVRマイコンのフラッシュメモリに書き込む。(ダウンロードする) ダウンロードには、専用の書き込みツールであるflipを用いる。 実際には、以下の手順で書き込みを行う。 ①USBケーブルをマイコンボードとPCに接続する。PC側のUSBコネクタは、正面パネルの右側のコネクタに挿入すること。 ②ジャンパピンを挿しこんだ状態で、リセットボタンを押す。(小さいので、ペンの先などで押すとやり易い) ③flipを立ち上げる。AVRStudioの「Tools」 → 「Flip3.4.7」の順でマウスカーソルをポイントする。 ④flipが起動したら、ビルドで作成された実行形式(プロジェクト名.hex)を選択する。「File」 → 「Load HEX File」の順でマウスをポイントし、プロジェクトのフォルダの中に作成されたdefaultフォルダ内の.hexファイルを選択する。 ⑤flipとマイコンボードを接続するため、ケーブルのアイコンをクリックし、USBを選択する。続いて「USB Port Connection」メニューで「Open」ボタンをクリックする。 以上で、flipとマイコンボードが接続される。エラー等が表示された場合は、ケーブルとマイコンボードの接続を再確認し、②の作業からやり直すこと。 ⑥書き込みを行う。図の「Run」ボタンをクリックすると、書き込みが行われる。 5.実行 書き込んだプログラムを実行するには、2つの方法がある。 (1)Filpから、「Start Application」ボタンを押して、プログラムを起動する方法。 この時、「Start Application」ボタンの横にある[Reset」チェックボックスのチェックを外しておく事。 シリアルケーブルを繋いだ状態でプログラミングやプログラムの実行を行う際は、こちらの方法を使う事。 (2)USBケーブルの抜き差しで行う方法。 (マイコンの電源がON/OFFする事でプログラムが起動する。)
https://w.atwiki.jp/autohotkey_v2/pages/11.html
プログラムの利用
https://w.atwiki.jp/devulman/pages/10.html
アニメーション制作に関するものは、作り方解説ページにあります。 自作プログラムの紹介 Visitor No. - - - Free ware Freeware フリーウェア フリーソフト プログラミング経験、8bit機のBasicで3年ほど、その後いわゆる8bitのDOSであるCP/M-80v2.0で、Turbo Pascalを使い始めて、20年超。今のDelphiは、Turbo Pascalの後継です。最近のお勧めは、ウソE-mailアドレス1000個発生機。役に立たないものもあります。余談ですが…8bit 4MHz時代からまったく同じ作業のプログラムを走らせるんです。川口洋一郎氏のデンデンムシみたいなCG(Illustration?参照)を線だけで構成されたもので描くだけなんですが、約24時間かかった作業が、i486-33MHzで25秒でした。今では1秒未満ですね…。画面最大に描いたら、1秒越えた。今後Virsion Upする可能性の或るものには★を付けました。 品目(◎ 人から少しは役立つという評価を受けたもの ○ 自分では役立つと思っているもの △ 役に立たない飾り □ ゲーム類) 評価 番号 分類 名前 △ (1) ゲーム? 終了することだけが目的の遊びプログラム ◎ (2) 音楽 Ten Holes(ブルースハープ)のひらがな楽譜生成 ◎ (3) 事務用品 年齢計算とカレンダー □ (4) ゲーム ★15パズル(1980年Switch on BASICの時代)と(今風な高速版、時間測定可能) ◎ (5) 数学 ルートあるいは平方根の筆算をやってみよう!(100桁超算出します) ○ (6) 数学系 ★数独を解かせてみよう! ◎ (7) 事務用品 銀行でお金をおろす時、必要な小銭の数を求める ◎ (8) ゲーム関係 ポケモン金銀save file改造プログラム ◎ Font UNKNOWN True Type Font with Official "!?" ○ (9) ウソE-Mail発生機 DM業者にレジスタンス! ○ (10) 数学 電話番号を素因数分解するソフト。 △ (11) 「よくできました」(パソコン作業で疲れたときに自画自賛しましょう) ○ (12) ゲーム ★ユニバーサルデザインを目指したオセロ盤 △ (13) 数学 ★サイクロイド曲線 ○ (14) 音楽 音楽コードずらし参照表 ○ (15) アニメ補助具 ★おどろき盤製作補助ツール ○ (16) アニメ補助具 シネカリもどき作画ツール △ (17) 補助具 ★エクセルのグラフで絵を描く △ (18) 数学 ★スピログラフ Spirograph, Spiro Graph ○ (19) アニメ補助具 internet reversi faker △ (20) 描画 ★雪の結晶描画ツール Snoe Flake Generater ◎ (21) 学習 計算練習ソフト (1)終了することだけが目的の遊びプログラム 最初はWindows3.1の頃にDelphi1.0で製作。その後2.0以降でコンパイルしなおしています。何をするわけでもないので終了してください。Win98あたりまでは、マウスクリックで終了できましたが、WinMe以降は、無理でした。マウスクリックによる終了をあきらめる時は、[Alt]+[F4]で終了してください。 Down Load (2)Ten Holes(ブルースハープ)の楽譜生成(数字譜) 10穴ハーモニカの練習にどうぞ......どうも...頭の中で「おたまじゃくし」と「そのシッポ」と「吹く吸う」を判断しながら練習するのはとても大変。以下のサンプルはStar Warsメインテーマの楽譜です----は伸ばす長さ、( )内は、何番目を吹くか吸うかの指示です。テキスト形式で出力しますので。MSワードか何かを利用して印刷してください。サンプルで、前述のものと、インディ=ジョーンズをZip Fileに梱包してあります。マイナーキーの10穴にも対応しています。 《これでも楽譜》 ド(4 ふ)---ソ(6 ふ)---ファ(5 す)ミ(5 ふ)レ(4 す) ド(7 ふ)--ソ(6 ふ)-ファ(5 す)ミ(5 ふ)レ(4 す) ド(7 ふ)--ソ(6 ふ)-ファ(5 す)ミ(5 ふ)ファ(5 す)レ(4 す)----- ハーモニカの穴になる部分などを1回クリックすると、それに対応した「ド(4 ふ)」などが1つ出力されます。そんなにややこしいものではないと思いますので適当に使って、慣れてください。また、ハーモニカのケツに貼り付ける数字のラベルを追加しました(2006/06/14)。 Down Load (3)年齢計算とカレンダー(事務用品) 医療や福祉や学校の現場では元号の変換やら年齢を知りたい。乳幼児を扱う現場では、才ヶ月表記だったりと面倒くさい計算をやってくれます。干支も学年もでます。私の職場では、アイコンから「馬場さんを使う」といってます。薬屋さんとかが、お医者さんのところへ、この手の早見表のついた下敷きや定規とか持ってきます。それのようなものです。 Down Load (4)15パズル(25年くらい前の雰囲気のプログラム) その1:8bitのスイッチ-オン-Basicの時代を懐かしみたい人に最適のせこいプログラム。1-15を並び替えるんですが、Key入力のみの操作になります。画面スクロール機能がまだついていないので、カーソルが行方不明になりますが、終了は、off [Enter]です。 Down Load その2:とりあえずマウスも使えて時間も表示される版です。必要最低限の機能で軽くしてあります。数字を識別しやすいように行ごとに色を変えてあります。お褒めの言葉も出ます。 その3:もう1つの15パズルは、プログラム自体はその2と同じものですが、Skin(皮)が違う版です。久しぶりに、座標使って絵を描きました。明治製菓が森永製菓でこのプログラム買ってくれないでしょうかね......イラストのページを参照してください。V2はどこが違うのか?って年中頻繁に使えば違いがわかります。最初の起動でも変化が現れることも1/20の確率であります。 ついでに、私の15パズルは、列をまとめて2個3個移動できます。現物のパズルではそのように移動できるし、通常は、まとめて移動したりすると手っ取り早いので、そのようにプログラムしてあります。 Windowsっぽい高速版 Down Load(4つの解答対応版) チョコレート版V2 Down Load(4つの解答対応版) #ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (15PUZZLE.GIF) なお、プログラムしていませんが、可能な並べ方は他にもあります。不可能が証明されている14と15を入替えた場合、不可の配列にできます。 (5)ルートあるいは平方根の筆算をやってみよう! というわけで、アイコンにも工夫を凝らしてルート5をデザインしてみました。これは、あるとき、Niftyの教えてくださいのコーナーにルートの筆算を教えて欲しいという書き込みがあって10日ほどがんばってつくってみた作品です。教えて欲しかった人に、芸術的という評価をいただきました。使ってくれるのは数学の先生くらいでしょうか? プログラムの中身は250桁のそろばんを4つ準備してひたすら筆算による開平法を実行させています。サンプルの1000桁は、2000桁のそろばんを設定して作業しているだけです。 2の平方根の筆算の概観 2の平方根の筆算の印刷用画像 元のテキスト ちょっと変更すると1000桁でも求められます Down Load (6)数独を解かせてみよう! zipに梱包されているファイルにも書きましたが、これで、楽をして懸賞に応募して、あたる人がいるとくやしいので、回数制限を設定してあります。 http //www.ri-center.tsukuba.ac.jp/~kurata/nplc/ このサイトの問題が解けなかった。解法としては、私のプログラムの場合、無理が生じると、空白が出現する。それを使って、(1)問題の入力、(2)解1、解2、OK?ボタンで、進めるだけ進む。変化がなくなったら、(3)一旦保存。複数候補が残っているところで、順に、数字を入れて(2)に戻る。空白が生じるなら、(3)を呼び出して、その数字は、そこのコマから排除、(3)からやり直す。(2)の繰り返しで変化がない時には、(3)を呼び出して、次の数字で同じことを繰り返す。という手順でどれも解ける。まぁ....そのうちプログラムしましょう。時間がかかるのに、なぜ解ける様子を表示するのか?それも、ボタンを何度も押させて...と思う人もいるでしょう.....自分がたのしいからです。映画「マトリックス」の降ってくる文字みたいなものです。 ソースファイルを見たい人がいるようなので公開します。基本的な解法はActionExecuteに記述しています。 ソースファイル Down Load (7)銀行でお金をおろす時、必要な小銭の数を求める(事務用品) これは、銀行にお金を引き出しに行くときに支払い先ごとに、小銭をバラバラで用意しなければならない時に使うプログラムです。 Down Load (8)ポケモン金銀save file改造プログラム これは、金銀版のsave fileを改造するプログラムです。save fileは、ゲームユーザーの著作物です。メーカーの著作物ではありません。どう書き換えようが勝手です。これを使って、ミュウもセレビィもそれらの色違いもいっぱい配布しました。ボックス単位で改造するソフトも作り、無償で配布することを条件に一人に30匹づつ渡したりのイベントも開催しました。もうカセットも電池切れですね。使い方は、save fileがあるフォルダーに一緒に入れて起動してください。あとは、適当に使ってみてください。念のため、save fileのコピーをとっておいてください。エラー処理はしていませんので、保存などしっかり確認しながらソフトを使ってください。変異体とは、赤いギャラドスみたいなものです。ミュウなら青、セレビイならピンク、黄花フシキバナなど楽しめます。 Down Load これは、プログラムではないんですが、ポケモン金銀以降に出てくるアンノーン(安穏ではなくunknown)のTTフォントです。使い方については質問しないでください。全種類を画像として参照し、TT-Editorで作ったものです。 - Unknown TTF Down Load Official"?!"version 2 (9)ウソE-Mail発生機 DM業者にレジスタンス! E-mail アドレスを検索収集しているロボットにウソのアドレスを拾わせるためのプログラム。あなたのWebsiteにも1ページをさいていただき1000のウソアドレスをupLoadしてください。この@wikiモード対応書式付のものと外国のお友達に紹介してもらって協力を得るためのHTML版のみのものと、2種類のプログラムを用意しました。 Uso-mail? サンプルページ。 @wiki版付のDown Load HTML版のみのDown Loadこっちのほうは外国のお友達などにも紹介してください。 (10) 電話番号を素因数分解するソフト。 電話番号は、据置き限定です。10桁といっても、0で始まるので実質9桁。プログラムの結果を保存します たとえば、ソフトの完成した日付8桁を実験すると、 2 ) 20080528 2 ) 10040264 2 ) 5020132 2 ) 2510066 13 ) 1255033 29 ) 96541 3329 20080528 = 2 × 2 × 2 × 2 × 13 × 29 × 3329 このように出力されます。 Down Load (11)「よくできました」 これといって目的のないソフトです。これは、職場の不規則勤務の入力支援ソフトを作ったときに勤務表作成者の労をねぎらう目的で作った冗談です。pascal講座の三角関数で桜を描く元ネタのソフトです。桜に月桂冠に花丸....なんか変な花丸がでますが、そこは、単なる冗談のソフトですから...... こんな感じです。桜 花丸 月桂冠 Down Load (12)ユニバーサルデザインを目指したオセロ盤 これは、コンピュータ対戦ではありません。タッチパネルパソコンで対人対戦するものです。もちろんタッチパネルでなくても使えますが... 実際の使用の具合では、手が不自由な場合、画面上を自由に行き来するのは困難である。人差し指1本だけ立てることができない場合、他の指であちこち触ってしまう。 この解決は、利き手側の画面の隅にコントロールを集中してしまう。候補を順に移動しながら、また、とめた部分でそれを確定するボタンをそれぞれ設定する。 また、そのうち......これはこれとして、type Bを作りましょう。 Down Load (13) サイクロイド曲線 8bit機の頃を懐かしんで作った三角関数の遊び。スピログラフなんかが好きな人には興味のあるものかもしれません。win3.1に移行して2つめに、Delphiで最初に作ったグラフィックのプログラム 印刷や多重描きの機能を付加(2010/2/3) Down Load (14)音楽コードずらし参照表 表題のとおりです。ギター弾くのに、このKeyは難しいから、半音さげてとか言うときに楽譜に変調したキーコードを書きますね。その時の参照物です。 Down Load (15)おどろき盤製作補助ツール おどろき盤を製作するときに11コマ13コマ14コマなどの配分をする道具。結果を印刷して、下敷きにして動画を作ってください。 Down Load (16)シネカリもどき作画ツール 詳細は絶滅危惧種を参照してください。 Down Load (17)エクセルグラフで絵を作る道具 Drawing with MS-Excel Chart MS-Excelの折れ線グラフを使って絵を描くための補助道具。ここを参照 This program will make you to draw a picture with MS-Excel chart.Cf This Page Down Load(With English Manual,日本語取説付、ソフトの日本語化も可能) (18)スピログラフ Spirograph, Spiro Graph サイクロイド曲線のところにスピログラフという言葉をかいたので、検索で探しにくる人がいます。そんな訳で作ってみました。騙し絵的に見えるものを...高画質印刷機能と画像保存機能をつけました。(2010/1/6) 歯車3個版も更新しました。G2 G3もはみ出さずに描ける様にしました。さらに更新。日本語説明付。 解説のページ Both Nomal type 3 Gears type with English Manual.(2010/1/9) Down Load-Nomal type V1.3 日本語表示可 Down Load-Nomal type V1.9 日本語表示不可 Down Load-with 3 gears type Manual(in English)(日本語版) Down Load-with 3 gears type Program v2.3 日本語表示不可 - - (19)interNet Reversi Faker This is an animation tool. Down Load (20)雪の結晶 Snow Flake Generator 雪の結晶をデザインするプログラム。基本形は私の好みで決めてますので似たような形のものしか出現しません。雪印のマークに似たものです。最大の問題点は、今の画面のデータが画像として保存される訳ではないことです。どのボタンもクリックする度に新しいものを作ってしまいます。私のプログラムは、一旦出来上がると余り改善しないでそのままになってしまう事が多いのですが、この点だけは何とかしたいと思います。一度つくるとそのままになってしまう最大の理由は、無計画で、試行錯誤を繰り返しつぎはぎだらけのプログラムを作ってしまうので自分自身が流れを理解できなくなってしまうためでしょう…多分。 Down Load (21)計算練習 計算練習の基本的な法則をおぼえるためのソフト、マウス入力、フルキーボード入力の切り替え、ネコ耳の女の子の絵で正解を教えてくれるとか、花丸の機能付き。 誤答のデータ保存をするのでチェックできます。 Down Load 何をダウンロードしましたか?(2014/4/7設置) 選択肢 投票 1_終了ゲーム (1) 2_Ten Holesひらがな楽譜生成 (0) 3_年齢計算とカレンダー (0) 4_15パズル (0) 5_平方根筆算 (0) 6_数独を解かせる (0) 7_小銭計算 (0) 10_素因数分解 (3) 18_スピログラフ (1) 20_雪の結晶 (1) 21_計算練習 (0) プログラムの感想などありましたらご記入ください。(2014/4/7再開) 名前 コメント Total - Yesterday - today - Page Top Top Page 以下は広告
https://w.atwiki.jp/autohotkey_v2/pages/13.html
AutoHotkeyは、それ自体では何もしません。スクリプトとは、プログラムの指示を含む、拡張子 .ahk のプレーンテキストファイルのことで、設定ファイルのようなものですが、より強力なものです。スクリプトは、1つのアクションを実行して終了する程度のものですが、ほとんどのスクリプトでは、いくつかのホットキーを定義し、それぞれのホットキーに続いて、ホットキーが押されたときに実行する1つまたは複数のアクションを指定します。 #z Run https //www.autohotkey.com ; Win+Z ^!n ; Ctrl+Alt+N { if WinExist( Untitled - Notepad ) WinActivate else Run Notepad } ヒント ブラウザがサポートしている場合は、コード ブロックの上にマウスを移動すると、コード ブロックの右上に表示されるボタンをクリックして、任意のコード ブロック (上のコードなど) をスクリプト ファイルとしてダウンロードできます。 目次 スクリプトを作成する スクリプトを編集する スクリプトを実行する トレイのアイコン メインウィンドウ 埋め込みスクリプト コマンドラインの使用法 AutoHotkey.exeの移植性 ランチャー ダッシュ 新しいスクリプト インストール UIアクセスで実行 スクリプトを作成する スクリプト ファイルを作成するには、いくつかの一般的な方法があります。 メモ帳(またはお好みのテキストエディタ)で、ファイル名の拡張子を .ahk としてファイルを保存します。システムによっては、エディターが別の拡張子(.txtなど)を追加しないように、名前を引用符で囲む必要がある場合があります。 ASCII 以外の文字が含まれる場合は、BOM 付きの UTF-8 としてファイルを保存してください。詳しくはFAQ をご覧ください。} エクスプローラで、スクリプトを保存したいフォルダの空き領域で右クリックし、「新規作成」「AutoHotkey Script」を選択します。次に、スクリプトの名前を入力します(拡張子.ahkが表示されている場合は、消さないように注意してください)。 Dashで、[New script]を選択し、スクリプトの名前(拡張子.ahkを除く)を入力して[Create]または[Edit]をクリックします。スクリプトの作成に使用するテンプレートと保存場所は、このウィンドウで設定でき、必要に応じてデフォルトとして設定することもできます。スクリプトの書き方の詳細については、スクリプト言語を参照してください。 スクリプトの書き方については、「スクリプト言語」を参照してください。 スクリプトを編集する スクリプトを編集用に開くには、スクリプトファイルを右クリックして「スクリプトの編集」を選択します。スクリプトがすでに実行されている場合は、編集機能を使用するか、スクリプトのトレイアイコンを右クリックして[スクリプトの編集]を選択できます。デフォルトのエディタをまだ選択していない場合は、エディタを選択するように促されるはずです。そうでない場合は、DashのEditor settingsでデフォルトのエディタを変更することができます。もちろん、最初にテキストエディタを開いてから、他のテキストファイルと同じようにスクリプトを開くことも可能です。 スクリプトを編集した後、変更を有効にするには、スクリプトを実行するか再読み込みする必要があります。実行中のスクリプトは、通常、トレイメニューから再読み込みできます。 スクリプトを実行する AutoHotkeyをインストールした状態で、スクリプトを実行するには、いくつかの方法があります。 エクスプローラでスクリプトファイル(またはスクリプトファイルへのショートカット)をダブルクリックする。 コマンドラインでAutoHotkey.exeを呼び出し、コマンドラインパラメータとしてスクリプトのファイル名を渡す。 デフォルトスクリプトを作成したら、スタートメニューのショートカットからAutoHotkeyを起動して実行する。 Windows 7以降でAutoHotkeyがタスクバーまたはスタートメニューにピン留めされている場合、最近のスクリプトまたはピン留めされているスクリプトは、プログラムのジャンプリストから起動することができます。 ほとんどのスクリプトは、実行中にのみ効果を発揮します。スクリプトを終了するには、トレイメニューまたはExitApp関数を使用します。スクリプトは、Windowsがシャットダウンしたときにも強制的に終了します。ユーザーがログインした後にスクリプトが自動的に起動するように設定するには、スクリプトファイルへのショートカットをスタートアップフォルダに配置するのが最も簡単な方法です。 スクリプトはコンパイルすることもできます。つまり、AutoHotkeyのバイナリファイルと一緒に組み合わせて、自己完結型の実行ファイル(.exe)を形成します。 トレイアイコン デフォルトでは、各スクリプトはタスクバーの通知領域(一般にトレイと呼ばれる)に独自のアイコンを追加します。 トレイアイコンは通常このように表示されます(ただし、スクリプトが一時停止または中断しているときは色や文字が変わります)。H トレイアイコンを右クリックすると、トレイメニューが表示され、デフォルトで以下のオプションがあります。 開く - スクリプトのメインウィンドウを開きます。 ヘルプ - AutoHotkey オフライン ヘルプ ファイルを開きます。 Window Spy - ウィンドウに関するさまざまな情報を表示します。 スクリプトの再読み込み - 「再読み込み」を参照してください。 スクリプトを編集する - 編集を参照してください。 Suspend Hotkeys - ホットキーを一時停止または一時停止解除します。 Pause Script - スクリプトを一時停止または一時停止解除します。 Exit - スクリプトを終了します。 デフォルトでは、トレイアイコンをダブルクリックすると、スクリプトのメインウィンドウが表示されます。 トレイアイコンとメニューの動作と外観はカスタマイズ可能です。 A_TrayMenu は、トレイメニューをカスタマイズするために使用できる Menu オブジェクトを返します。 A_IconHiddenまたは#NoTrayIconディレクティブを使用して、トレイアイコンを非表示(または表示)することができます。 A_IconTipは、トレイアイコンに新しいツールチップテキストを割り当てることができます。 TraySetIcon を使用して、アイコンを変更することができます。 メインウィンドウ スクリプトのメインウィンドウは通常非表示になっていますが、トレイアイコンや以下に示す機能のいずれかを使って表示することで、スクリプトのデバッグに役立つ情報にアクセスすることができます。表示] メニューの項目は、メインウィンドウの表示内容を制御します。 最近実行された行 - ListLines を参照してください。 変数とその内容 - ListVarsを参照してください。 ホットキーとそのメソッド - ListHotkeysを参照してください。 キー履歴とスクリプト情報 - KeyHistoryを参照してください。 既知の問題 スクリプトがメッセージ ボックスまたはその他のダイアログを表示している間は、メニュー項目のキーボード ショートカットは機能しません。 組み込み変数A_ScriptHwndには、スクリプトのメイン ウィンドウの一意の ID (HWND) が含まれています。 このウィンドウをWinCloseで(別のスクリプトからでも) 閉じると、スクリプトは終了しますが、他のほとんどの方法では、ウィンドウを非表示にしてスクリプトを実行したままにします。 メイン ウィンドウを最小化すると、自動的に非表示になります。これは、所有するウィンドウ (GUI ウィンドウや特定のダイアログ ウィンドウなど) が自動的に最小化されるのを防ぐために行われますが、メイン ウィンドウのタスクバー ボタンを非表示にする効果もあります。代わりに、メイン ウィンドウを通常どおり最小化できるようにするには、デフォルトの処理をOnMessageでオーバーライドします。例えば: ; This prevents the main window from hiding on minimize OnMessage 0x0112, PreventAutoMinimize ; WM_SYSCOMMAND = 0x0112 OnMessage 0x0005, PreventAutoMinimize ; WM_SIZE = 0x0005 ; This prevents owned GUI windows (but not dialogs) from automatically minimizing OnMessage 0x0018, PreventAutoMinimize Persistent PreventAutoMinimize(wParam, lParam, uMsg, hwnd) { if (uMsg = 0x0112 && wParam = 0xF020 && hwnd = A_ScriptHwnd) { ; SC_MINIMIZE = 0xF020 WinMinimize return 0 ; Prevent main window from hiding. } if (uMsg = 0x0005 && wParam = 1 && hwnd = A_ScriptHwnd) ; SIZE_MINIMIZED = 1 return 0 ; Prevent main window from hiding. if (uMsg = 0x0018 && lParam = 1) ; SW_PARENTCLOSING = 1 return 0 ; Prevent owned window from minimizing. } メインウィンドウのタイトル スクリプトのメイン ウィンドウのタイトルは、#SingleInstanceおよびReloadメカニズムによって使用され、同じスクリプトの他のインスタンスを識別します。タイトルを変更すると、スクリプトがそのように識別されなくなります。デフォルトのタイトルは、スクリプトのロード方法によって異なります。 ロード元 タイトル 例 .ahkファイル A_ScriptFullPath " - AutoHotkey v" A_AhkVersion E \My Script.ahk - AutoHotkey v1.1.33.09 主リソース(コンパイル済スクリプト) A_ScriptFullPath E \My Script.exe その他リソース A_ScriptFullPath " - " A_LineFile E \My AutoHotkey.exe - *BUILTIN-TOOL.AHK 次のコードは、デフォルトのタイトルをスクリプト自体で決定する方法を示しています(ただし、実際のタイトルはWinGetTitleで取得できます)。 title = A_ScriptFullPath if !A_IsCompiled title .= - AutoHotkey v A_AhkVersion ; For the correct result, this must be evaluated by the resource being executed, ; not an #include (unless the #include was merged into the script by Ahk2Exe) else if SubStr(A_LineFile, 1, 1) = * && A_LineFile != *#1 title .= - A_LineFile 埋め込みスクリプト スクリプトは、Ahk2Exeコンパイラを使用してWin32(RCDATA)リソースとして追加することにより、標準のAutoHotkey .exeファイルに組み込むことができます。追加のスクリプトを追加するには、AddResourceコンパイラディレクティブを参照してください。 埋め込みスクリプトは、コマンドラインまたは#Includeで、アスタリスク(*)の後にリソース名を記述して指定することができます。整数IDの場合、リソース名はハッシュ記号(#)に続けて10進数を指定する必要があります。 このプログラムは、ファイル内に存在する場合、以下のリソースからスクリプトコードを自動的に読み込むことができます。 ID 仕様 使い方 1 *#1 これは、.exeファイルからコンパイルされたスクリプトを作成するための手段です。このスクリプトは自動的に実行され、ほとんどのコマンドラインスイッチはプログラムによって解釈されるのではなく、スクリプトに渡されます。外部スクリプトや代替の埋め込みスクリプトは、/scriptスイッチを使用することで実行することができます。 2 *#2 このスクリプトがある場合、プログラムが読み込むスクリプトの前、および/includeで指定されたファイルの前に、自動的に「インクルード」されます。 メインスクリプトのソースが埋め込みリソースである場合、プログラムは「コンパイルスクリプト」モードで動作しますが、例外としてA_AhkPathには常に現在の実行ファイルのパスが含まれます(A_ScriptFullPathと同じです)。1以外のリソースについては、#SingleInstanceとReloadをサポートするために、リソース指定子がメインウィンドウのタイトルに含まれます。 埋め込みリソースから来たコードから参照される場合、A_LineFileにはアスタリスク(*)の後にリソース名が含まれます。 コマンドラインの使用法 プログラムの動作に影響を与えるコマンドラインスイッチのリストを含むコマンドラインの使用法については、「スクリプトにコマンドラインパラメータを渡す」を参照してください。 AutoHotkey.exe の移植性 AutoHotkey.exeファイルは、任意の.ahkスクリプトを起動するために必要なすべてのものです。 AutoHotkey.exeの名前を変更すると、デフォルトで実行されるスクリプトも変更され、AutoHotkeyがインストールされていないコンピュータで使用するためにスクリプトをコンパイルする代わりに使用することができます。例えば、MyScript.exeは、ファイル名が提供されない場合、自動的にMyScript.ahkを実行しますが、他のスクリプトを実行することも可能です。 ランチャー ランチャーは、1つのシステムでv1とv2のスクリプトを1つのファイル名拡張子で使用できるようにするもので、必ずしも1つのバージョンを優先したり、スクリプトを起動するための異なる方法を要求する必要はありません。ランチャーは、スクリプトに必要なバージョンの手がかりをチェックし、スクリプトを実行するための適切なexeを見つけることでこれを実現します。 スクリプトに#Requiresディレクティブが含まれている場合、ランチャーは、その要件を満たすexeを探します。それ以外の場合、ランチャーはオプションで構文をチェックする。つまり、2つのメジャーバージョンのうち1つでしか有効でないパターンをチェックするのです。一般的なパターンとしては、以下のようなものがあります。 v1 MsgBox、コンマ付き、MsgBox % "no end percent"、Legacy = assignment。 v1:中括弧や関数定義のない複数行のホットキー。 #NoEnv、#If(v1)または#HotIf(v2)などの共通ディレクティブ。 v2 囲い込みや行末の継続演算子による継続の曖昧さのない使用。 v2 v2 式中の「シングルクォート」またはファットアロー = の曖昧な使用。 検出は保守的であり、曖昧なケースは一般的に無視されるべきである。 検出が失敗した場合、デフォルトでは、ユーザーがバージョンを選択するためのメニューが表示されます。このデフォルトは、v1またはv2のいずれかを起動するように変更することができます。 既知の制限 チェックされるのはメインファイルのみです。 v1では/****/ のような行を含めることは合法ですが、v2では行末の*/はコメントを閉じるだけなので、このような行があると、スクリプトの大部分が(ランチャーとv1インタープリターの両方によって)無視されることがあります。 チェックされるのは構文だけで、意味論はチェックされません。例えば、xyz, は v2 では無効であるため、有効な v1 コマンドであると見なされます。xyz 1 は v2 では関数文である可能性がありますが、有効な v1 コマンドであると見なされるため、無視されます。 検出されるパターンは、実質的に1つのバージョンの構文エラーであるため、実際の構文エラーや不正に混合された構文を持つスクリプトは、誤認される可能性があります。 注:メインファイルの先頭で#Requiresを使用して必要なバージョンを宣言することで、あいまいさが解消されます。 起動設定 同じバージョン番号を持つ複数のインタープリターが見つかった場合、ランチャーは、あらかじめ決められた、またはユーザーが定義した基準に従って、それらをランク付けすることができます。基準は、カンマで区切られた部分文字列のリストとして表現することができ、それぞれの部分文字列は、一致を否定するために「!」を前置することができる。スコアは、どの部分文字列が一致したかに基づいて計算され、最も左の部分文字列が最も優先される。 ただし、"UIA "は例外で、ファイル名に"_UIA "が含まれていれば一致します。 例えば、_H, 64, !ANSIは、AutoHotkey_Hがあればそれを、システムと互換性があれば64ビットを、そして最後にANSIよりもUnicodeを優先します。 Launcher Settings GUIでは、"Unicode 32-bit "などのオプションがドロップダウンリストに表示されますが、サブストリングのリストは手動で入力することができます。 追加の(優先順位の高い)基準は、/RunWith ランチャースイッチを使用してコマンドラインで指定することができます。 基準は、#Requiresディレクティブを使用してスクリプト内で指定することができ、要件として(ターゲットAutoHotkeyバージョンでサポートされている場合)、または「prefer」で始まりフルストップまたは行末で終わるコメントとしてディレクティブに追加されます。例えば、以下のようになります。 基準 同じバージョン番号を持つ複数のインタープリターが見つかった場合、ランチャーは、事前に定義された、またはユーザー定義の一連の基準に従ってそれらをランク付けできます。条件は、部分文字列のカンマ区切りのリストとして表現できます。各部分文字列の前に「!」を付けることができます。一致を否定します。一致した部分文字列に基づいてスコアが計算され、最も左側の部分文字列が最も優先度が高くなります。 部分文字列は、ファイル名に「_UIA」が含まれている場合に一致する「UIA」を除いて、ファイルの説明で一致します。 たとえば、利用可能な場合は AutoHotkey_H を優先し、システムと互換性がある場合は 64 ビットを優先し、最後に ANSI よりも Unicode を優先します。_H, 64, !ANSI ランチャー設定 GUI には「Unicode 32 ビット」などのオプションを含むドロップダウン リストが表示されますが、部分文字列のリストは手動で入力できます。 /RunWithランチャー スイッチを使用して、コマンド ラインで追加の (優先度の高い) 条件を指定できます。 #Requiresディレクティブを要件として (ターゲットの AutoHotkey バージョンでサポートされている場合) 使用するか、"prefer" で始まりピリオドまたは行末で終わるコメントとしてディレクティブに追加することにより、スクリプト内で基準を指定できます。. 例えば: #Requires AutoHotkey v1.1.35 ; prefer 64-bit, Unicode. More comments. 実行 *起動 インストーラーは、"launch "という名前の隠しシェル動詞を登録し、/Launchスイッチでランチャーを実行させます。この例に従うことで活用することができます。 pid = RunWait( *Launch PathOfScript ) .ahkファイルに対するデフォルトの動作とは対照的です。 通常、起動したスクリプトの終了コードが返されるのに対し、/Launchでは、新たに起動したスクリプトのプロセスID(PID)が、ランチャーの終了コードとして返されます。RunのOutputVarPIDパラメータは、ランチャーのPIDを返します。 /スクリプトを起動した後、すぐにランチャーを終了させることができます。Launchを使用しない場合、ランチャーは通常、親プロセスがRunWait(PathOfScript)のような動作をしていると考える必要があり、ランチャーが起動したスクリプトより先に終了してしまうと期待通りに動作しない。 コマンドラインの使用法 ランチャーは、.ahkファイルがデフォルトでランチャーを使用するように設定されていない場合、またはランチャーの動作をより細かく制御するために、コマンドラインで明示的に実行することができます。ランチャーがコンパイルされている場合、その使用方法は、追加のランチャースイッチを除いて、基本的にAutoHotkey.exeと同じです。それ以外の場合、コマンドラインで使用するためのフォーマットは次のとおりです。 AutoHotkeyUX.exe launcher.ahk [Switches] [Script Filename] [Script Parameters] 通常、フルパスと引用符は、AutoHotkey インストールの UX サブディレクトリにある AutoHotkeyUX.exe と launcher.ahk へのパスとして使用されるでしょう。AutoHotkeyUX.exe(単なるコピーです)の代わりに、AutoHotkey32.exeまたはAutoHotkey64.exeの適切なバージョンを使用することができます。 スイッチは、標準的なスイッチと、以下のランチャー専用スイッチのいずれかを混在させることができます。 スイッチ 意味 /Launch バックグラウンドでスクリプトの終了を待つのではなく、スクリプトの起動直後にランチャーを終了させます。ランチャーの終了コードは、新しいスクリプト プロセスのプロセス ID (PID) です。 /RunWithcriteria スクリプトの起動に使用する実行可能ファイルを決定するための追加基準を指定します。たとえば、/RunWith UIA. /Which ランチャーが使用するインタープリターを識別し、スクリプトを実行する代わりにそれを返すようにします。#Requires または構文 (構文検出が有効な場合) で識別される場合、ランチャーの終了コードはメジャー バージョン番号 (1 または 2) であり、それ以外の場合は 0 です。Stdoutには,`n で終端された次のようなUTF-8文字列が出力されます.・バージョン番号。#Requires が検出された場合、これは "v" を除く、指定された任意の番号です。 それ以外の場合は、バージョンが検出されなかった場合を除き、終了コードと同じ整数です。 この場合、これは 0 で、ユーザーにプロンプトが表示されたことを示します。 または、1 または 2 で、構成されているユーザーの優先バージョンを示します。起動設定。・インタープリタEXEが見つかった場合に使用されるパスです。 ユーザーにプロンプトが表示されるか、互換性のあるインタープリターが見つからなかった場合は空白になります。・ランチャーが挿入する追加のコマンドラインスイッチ(/CP65001など)。今後、追加の行が返される可能性があります。 ダッシュ ダッシュは、サポートスクリプトとドキュメントへのアクセスを提供します。インストール後にスタートメニューの「AutoHotkey」ショートカットから開くか、インストールディレクトリから直接UXui-dash.ahkを実行することで開くことができます。現在は以下のようなメニューになっていますが、今後、アクティブなスクリプトのコントロールや、便利な機能を拡張していく予定です。 新しいスクリプトを作成する。テンプレートから新しいスクリプトを作成します。 コンパイルします。Ahk2Exeを開くか、自動的にダウンロードとインストールを行います。 ヘルプファイル(F1)。v1、v2、およびインストールディレクトリにあるその他のCHMファイルのヘルプファイル、オンラインドキュメントを含むメニューを表示します。 ウィンドウ・スパイ 起動の設定です。ランチャーを設定します。 エディター設定。.ahk ファイルのデフォルトエディターを設定します。 スタートメニューのショートカットでダッシュが起動しますが、タスクバー(Windows 7 または 10 ではスタートメニュー)にピン留めされている場合、ジャンプリストには open、runas または UIAccess シェル動詞で起動した最近のスクリプト(通常はエクスプローラーのコンテキストメニューまたはファイルのダブルクリックでアクセスされる)が含まれることに注意してください。スクリプトは簡単にアクセスできるようにピン留めすることができます。 新しいスクリプト 新規スクリプトGUIは、ダッシュボードから、またはエクスプローラでフォルダ内を右クリックして新規作成 → AutoHotkey Scriptを選択することでアクセスできます。このGUIを使用して、プリインストールまたはユーザー定義のテンプレートから新しいスクリプトファイルを作成し、オプションでそれを開いて編集することができます。 リスト内のテンプレートを右クリックすると、以下のオプションが表示されます。 テンプレートを編集する。テンプレートの編集:テンプレートをデフォルトのエディターで開きます。プリインストールされているテンプレートの場合、オリジナルを開くのではなく、編集可能なコピーが作成されます。 テンプレートを隠す。テンプレートを隠す:テンプレート名をGUIに表示されないテンプレートのリストに追加します。テンプレートの非表示を解除するには、HKCU\Software\AutoHotkNew\HideTemplateから対応するレジストリ値を削除します。 デフォルトとして設定する。デフォルトで選択されるようにテンプレートを設定します。 デフォルトでは、ファイルを作成した後、Ctrlキーを押したままでないとGUIが閉じます。 追加の設定は、GUI左下の設定ボタンからアクセスできます。 デフォルトでCreateになります。Enterキーを押すと、Createボタンが起動し、スクリプトが作成され、エクスプローラで選択されます。 デフォルトで編集:Enterを押すと、編集ボタンが起動し、スクリプトが作成され、デフォルトのスクリプトエディタで開かれます。 開いたままにする 有効にすると、スクリプトを作成した後にウィンドウが自動的に閉じなくなります。 フォルダーをデフォルトに設定する。現在のフォルダを、スクリプトを保存するデフォルトの場所として設定します。デフォルトの場所は、[新しいスクリプト]ウィンドウを直接または[ダッシュ]経由で開いた場合に使用され、エクスプローラーのコンテキストメニューから[新しいスクリプト]を起動した場合は使用されません。 テンプレートフォルダを開く ユーザー定義のテンプレートが保存されているフォルダを開きます。 テンプレート テンプレートファイルは、UXTemplates(プリインストール)と%A_MyDocuments%AutoHotkeyTemplates(ユーザー)から描かれ、ユーザー定義テンプレートは、同じ名前を持つプリインストールテンプレートを上書きする。%A_WinDir%ShellNewTemplate.ahk にファイルが存在する場合、それは "Legacy" として表示され、その名前のユーザー定義テンプレートで上書きすることができます。 各テンプレートは、以下のようなINIセクションを含むことができる。 /* [NewScriptTemplate] 説明 = 説明文 実行 = true|false|1|0 */ 上記のように、INIセクションが/*で始まり、*/で終わる場合、作成されたファイルには含まれません。 Descriptionはオプションです。GUI上ではファイル名の他に表示されます。 Executeはオプションです。trueを指定すると、A_Args[1]に作成するファイルのパス、A_Args[2]にユーザーがクリックしたボタンに応じて「作成」「編集」のいずれかを指定して、テンプレートスクリプトが実行されます。テンプレートスクリプトは、ファイルを作成し、必要に応じて編集用に開くことが期待されます。テンプレートスクリプトが他のファイルを#includeする必要がある場合、テンプレートリストに表示されないように、サブディレクトリに配置することができます。 インストール このインストーラと関連スクリプトは、複数のバージョンのAutoHotkeyの共存を可能にするために設計されています。ほとんどのことはインストール後に設定できるため、インストーラはほとんどオプションを提供しません。インストール時に選択する必要があるのは、以下の項目のみです。 インストールする場所。 インストールする場所。全ユーザーにインストールするか、現在のユーザーにインストールするか。 デフォルトでは、インストーラはすべてのユーザーに対して「%A_ProgramFiles%AutoHotkey」にインストールします。UI Accessオプションでは、Program Filesの下にプログラムをインストールする必要があるため、これを推奨します。インストーラがまだ管理者として実行されていない場合、[インストール]ボタンをクリックすると、ボタン上のシールドアイコンで示されるように、昇格を試みます。 カレントユーザーインストールでは、選択したディレクトリへの書き込み権限がある限り、管理者権限は必要ありません。カレントユーザーインストールのデフォルトのディレクトリは、"%LocalAppData%\Programs\AutoHotkey" です。 v1 でのインストール v1とv2を一緒にインストールする方法には、2種類あります。 v1を先にインストールし、その後v2をインストールする。この場合、v1のファイルはインストールディレクトリのルートに残され、現在のパスに依存する外部ツールやショートカットが壊れないようにする。 v1を追加バージョンとしてインストールする。v1.1.34.03以降のインストーラを実行すると、このオプションが得られます。または、後述の/installスイッチを使用します。各バージョンは、それぞれのサブディレクトリにインストールされます。 v1.1.34.02 以前のインストーラ (または v1.1.34.03 以前のカスタムインストール) を実行すると、バージョン番号、アンインストーラエントリー、ファイルタイプ登録の一部など、v2 インストーラがレジストリに設定した値のいくつかが上書きされます。また、v1のアンインストーラーも登録され、両バージョンを正しくアンインストールすることができなくなります。v2を再登録するには、v2インストーラを再実行するか、AutoHotkey32.exeまたはAutoHotkey64.exeを使用してUXinstall.ahkを実行してください。 デフォルトのバージョン v1インストールとは異なり、インストール時にデフォルトのバージョンは選択されません。デフォルトはランチャーによってより動的に処理され、ユーザーごとに設定することができます。 コマンドラインの使用法 DESTINATIONディレクトリに直接インストールする場合は、ソースディレクトリ内から、以下のように/installtoまたは/to(この2つのスイッチは互換性があります)を使用します。ダウンロードしたsetup.exe、またはダウンロードしたZIPなどから展開したファイルを使用します。 AutoHotkey_setup.exe /installto %DESTINATION% AutoHotkey32.exe UX\install.ahk /to %DESTINATION% SOURCE(AutoHotkey*.exeファイルを含むディレクトリ)から追加バージョンをインストールするには、現在のインストールディレクトリ内で以下を実行します(必要に応じてAutoHotkey32.exeのパスを調整します)。 AutoHotkey32.exe UX\install.ahk /install %SOURCE% 上記の完全なコマンド文字列は、HKLM\Software\AutoHotkey または HKCU\Software\AutoHotkeyの下にInstallCommandとして登録され、ソースディレクトリの代用として%1が指定されます。このレジストリ値を使用すると、より将来性があります。 現在のインストールを再登録するには AutoHotkey32.exe UX\install.ahk 現在のインストールを再登録するには AutoHotkey32.exe UX\install.ahk アンインストールするには AutoHotkey32.exe UX\install.ahk /uninstall または、次のレジストリ キーのいずれかからQuietUninstallString値を読み取り、それを実行します。 HKLM\Microsoft\Windows\CurrentVersion\Uninstall\AutoHotkey HKCU\Microsoft\Windows\CurrentVersion\Uninstall\AutoHotkey silentスイッチを使用すると、警告や確認ダイアログを抑制し、インストール完了時にDashが表示されないようにすることができます。以下のアクションは、警告なしに自動的に実行される場合があります。 AutoHotkey*.exeの上書きを許可するためにスクリプトを終了させる。 インストーラによって以前に登録されていないファイル、または登録後に変更されたファイルを上書きする。 タスクバーボタン v2インストーラでは、タスクバーボタンを分離するオプションが提供されていません。以前は、各AutoHotkey実行ファイルをホストアプリとして登録する(IsHostApp)ことで実現していましたが、この方法には限界があり、複数のバージョンをインストールできるようになると管理しづらくなってしまいます。その代わりに、各スクリプトは、そのプロセスまたはウィンドウのAppUserModelIDを設定して、グループ化を制御する必要があります。。 UIアクセスで実行 Program Filesの下にインストールする場合、インストーラは、いくつかの一般的なUAC関連の問題を回避するために使用できる追加のAutoHotkey exeファイルのセットを作成します。これらのファイルには、"_UIA.exe "という接尾辞が付けられます。これらのUIA.exeファイルの1つを管理者が使用してスクリプトを実行すると、スクリプト自体が管理者として実行されることなく、管理者として実行されるプログラムのウィンドウと対話することができるようになります。 インストーラは次のことを行います。 各AutoHotkey*.exeをAutoHotkey*_UIA.exeにコピーします。 各UIA.exeファイルの埋め込みマニフェストでuiAccess属性を設定します。 AutoHotkey」という名前の自己署名入りデジタル証明書を作成し、各UIA.exeファイルに署名します。 エクスプローラーのコンテキストメニューに「UIアクセスで実行」として表示されるUIAccessシェル動詞を登録します。デフォルトでは、ランチャーが実行され、スクリプトを実行するために適切なUIA.exeファイルを選択しようとします。 ランチャーは、v1スクリプト、v2スクリプト、またはその両方をデフォルトでUIアクセスで実行するように設定することもできますが、選択したバージョンとビルドに対してUIA.exeファイルが存在しない場合、このオプションは何の効果も持ちません。 UIアクセスで他のスクリプトを実行する必要があるスクリプトは、通常のコマンドライン・パラメーターで適切なUIA.exeファイルを実行するだけです。また、UIAccessシェル動詞が登録されている場合は、Runで使用することもできます。たとえば、次のようになります。Run *UIAccess "Script.ahk" を実行します。 既知の制限 UIAは、ファイルが信頼できる場所(Program Filesのサブディレクトリなど)にある場合にのみ有効です。 あるコンピュータで作成されたUIA.exeファイルは、その署名に使用されたデジタル証明書をインストールしない限り、他のコンピュータで実行できません。 セキュリティ上の制限により、UIA.exeファイルをCreateProcessで起動することはできません。代わりにShellExecuteを使用することができます。Runはその両方を試します。 UIA.exeファイルは、ファイルのデジタル署名が無効になるため、変更することはできません。 UIAプログラムは他のプログラムとは異なる「完全性レベル」で実行されるため、他のUIAプログラムによって登録されたオブジェクトにのみアクセスできます。例えば、ComObjActive("Word.Application")は、WordがUI Accessにマークされていないため、失敗します。 スクリプト自身のウィンドウは、セキュリティ上の理由から、UIA以外のプログラム/スクリプトによって自動化することができません。 マウスフック(InstallMouseHookのような単純なものでも可)を使用する非UIAスクリプトを実行すると、UIAスクリプトが所有するウィンドウにマウスが向いているときに、UIAスクリプト自身が実装したホットキーであっても、すべてのマウスホットキーが動作しないことがあります。回避策としては、UIAスクリプトが最後にロードされるようにすることです。 新しい親ウィンドウが常に上にあり、子ウィンドウが上にない場合、UIAは既存のウィンドウでGui +Parentオプションが機能しないようにします。 詳しくは、アーカイブフォーラムの「管理プログラムとのインタラクションを有効にする」を参照してください。 https //www.autohotkey.com/docs/v2/Program.htm
https://w.atwiki.jp/pleasealloy/pages/19.html
コラム「同じ」プログラムであるとはどういうことか 望まれないバージョンアップ プログラムをバージョンアップするとき、お客さん自体がそれを望んでいるわけではなく、単に古いOSが入手できなくなったとか、新しいOSが古い開発環境で作られたものの動作をサポートしてくれないとか、そういう外的なきっかけであることが多いようです。 こういう場合、お客さんはプログラムの挙動が変わることを一番恐れていて、やりたくもないバージョンアップをして、その結果実行結果が変わってしまったという場合、勢い製造現場への風当たりも強くなってしまいます。 また、こういうバージョンアップの場合、お客さんは仕様を考え直すようなモチベーションもなく、単に「前と同じように動作すること」という要求仕様で終わってしまうことも少なくありません。 しかし、VisualBasic6で作られたプログラムを無理やりC#やVB.Netで書き直すと、プログラムの形そのものが変わってしまい「どんなケースでも同じ結果を出す」プログラムであることを示すことが非常に難しくなります。 仕様であるものとないもの プログラムの動きには、残念なことに「こうしている」ものと「こうなっている」ものがあり、運がよければ前者は仕様に書かれているのですが、後者は書かれていません。そのため後者の範囲にあるものは、バージョンアップによって動きが変わってもそれに気づくこと自体が非常に難しくなります。たまたま見つかることはあっても、見つけるためのテストというものは、そもそも想定出来ません。想定できるものは仕様に書かれているからです。 通常、ネジなど工業製品には「許容公差」というものが仕様に必ずあり、どの範囲なら「同じ」と言っていいかが仕様に明確に定められています。 しかしソフトウェアにはこういうものがなく、発注側は「同じといったら同じだ」を繰り返すばかりです。 困ったことに、二つのものが同じであるかを証明するには無限の時間が必要ですが、同じでないことは、ただひとつの反例を見つけた時点で証明が終わってしまうのです。同じであることを保証するというのは、あまりにも分の悪い作業であることがわかります。 この「許容公差」という考えがないところが、ソフトウェア業界が産業として未熟であることを示しているのではないでしょうか。 仕様に書いていないものは仕様ではない 仕様に書いていないことすべてを「許容公差」であるとするならば、仕様には工業製品なみの厳格さが必要となり、「書いてなくても分かるでしょ普通」というようなノリが許されないようなルールが必要となってきます。ソフトウェアが「同じ動作」であることを保障する範囲が「仕様に書いてあること」であり、それに書いていない範囲のことで新旧のソフトの動作が違っていてもそれが許されるような仕様書こそが、ソフトウェアにはそもそも必要とされているのです。 このあたりの解決に、Alloyは非常に分かりやすい道筋を示してくれているように思えるのです。Alloyの探索の深さは、そのまま「許容公差」をイメージできる数値ともとれます。 Alloyのように、仕様を無表情に解釈し理解する脳こそ、ソフトウェアの設計に必要なものなのではないかと思うのです。 (文責:片山 功士 2011/11/05) 今日: - 人 昨日: - 人 トータル: - 人
https://w.atwiki.jp/ce00582/pages/46.html
Private Sub Command1_Click() Dim ks As Single Dim a As Single Dim beta As Single Dim r1 As Single Dim n As Single Dim cx(1 To 10, 1 To 100) As Single Dim cp(1 To 10, 1 To 100) As Single Dim k(1 To 100) As Single Dim h As Single Dim k1 As Single Dim n1 As Single Dim n2 As Single Dim n3 As Single Dim c1 As Single Dim e As Single Dim m As Single Dim de As Single Dim th(1 To 10) As Single de = 0.05 For m = 1 To 10 th(m) = 0.95 + 0.01 * m Next de = 0.05 beta = 0.95 a = 0.33 ks = ((1 / beta + de - 1) / a) ^ (1 / (a - 1)) Debug.Print ks h = 2 * ks / 100 For n = 1 To 100 k(n) = n * h For m = 1 To 10 cx(m, n) = th(m) * k(n) ^ a - de * k(n) Next Next t1 = 0 Do Until t1 100 For m = 1 To 10 For n = 10 To 90 k1 = k(n) + th(m) * k(n) ^ a - cx(m, n) - de * k(n) n1 = k1 / h n2 = Int(n1) n3 = n2 + 1 uc = 0 For m1 = 1 To 10 c1 = cx(m1, n2) + (n1 - n2) * (cx(m1, n3) - cx(m1, n2)) r1 = a * k1 ^ (a - 1) - de uc = uc + (beta * (1 + r1)) / c1 Next uc = 0.1 * uc cp(m, n) = 1 / uc Next Next e = 0 For m = 1 To 10 For n = 10 To 90 e = e + (cx(m, n) - cp(m, n)) ^ 2 Next Next For m = 1 To 10 For n = 10 To 90 cx(m, n) = cp(m, n) Next Next If e 10 ^ (-5) Then t1 = 1000 t1 = t1 + 1 Debug.Print t1, e Loop End Sub
https://w.atwiki.jp/ce00582/pages/4640.html
import java.io.*; import java.net.*; class game0322{ String urlx; String bun; int year1,month1,day1; int year2,month2,day2; String ycode; String[] xml=new String[10000]; String[] xmlxml=new String[10000]; int[] xmllong=new int[10000]; int[] x=new int[10000]; int[] y=new int[10000]; int xmlnumber; int s,sx,ex; int h; public static void main(String [] args) { game0322 f=new game0322(); } game0322(){ year1=2005; month1=10; day1=1; year2=2005; month2=11; day2=1; ycode="4755.q"; urlx=getyahoo(ycode,year1,month1,day1,year2,month2,day2); getdata(urlx); xmlmaker(bun); for(s=1;s xmlnumber;s++){ xmlxml[s]=xmlxmlmaker(s); } for(s=1;s xmlnumber;s++){ xmlxml[s]=xmlxmlmaker(s); xmllong[s]=xmlxml[s].length(); } System.out.println(doragon(year1,month1)); } int doragon(int year1,int month1){ int s,z1; z1=0; for(s=1;s xmlnumber;s++){ if(check(s,year1,month1) 50)z1=z1+1; } return z1; } int check(int s,int year1,int month1){ String syear,smonth; int z; z=0; syear=String.valueOf(year1); smonth=String.valueOf(month1); h=0; if(xmllong[s] 2)h=h+1; if(xmllong[s] 20)h=h+1; if(xmlxml[s].indexOf(syear) -1)h=h+1; if(xmlxml[s].indexOf(smonth) -1)h=h+1; if(h==4)z=100; return z; } String getyahoo(String ycode,int year1,int month1,int day1,int year2,int month2,int day2){ String url; String syear,smonth,sday; String eyear,emonth,eday; syear=String.valueOf(year1); smonth=String.valueOf(month1); sday=String.valueOf(day1); eyear=String.valueOf(year2); emonth=String.valueOf(month2); eday=String.valueOf(day2); url="http //table.yahoo.co.jp/t?c="; url=url+syear; url=url+" a="; url=url+smonth; url=url+" b="; url=url+sday; url=url+" f="; url=url+eyear; url=url+" d="; url=url+emonth; url=url+" e="; url=url+eday; url=url+" g=d s="; url=url+ycode; url=url+" y=0 z="; url=url+ycode; url=url+" x=sb"; return url; } String xmlxmlmaker(int s){ int p1,p2; String str; p1=y[s]; p2=x[s+1]; str=bun.substring(p1+1,p2); return str; } void xmlmaker(String bun){ int p1; int s; s=1; p1=bun.indexOf(" "); x[1]=p1; while(p1 -1){ p1=bun.indexOf(" ",p1+1); if(p1 -1)s=s+1; if(p1 -1)x[s]=p1; } xmlnumber=s; for(s=1;s xmlnumber+1;s++){ y[s]=bun.indexOf(" ",x[s]); } for(s=1;s xmlnumber+1;s++){ xml[s]=bun.substring(x[s]+1,y[s]); } } void getdata(String name){ int num; int n; String data[]=new String[1000]; num=0; try{ URL url = new URL(name); HttpURLConnection con = (HttpURLConnection)url.openConnection(); con.setRequestMethod("GET"); con.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8")); n=0; while (true){ String line = reader.readLine(); if ( line == null ){ break; } data[n]=line; n=n+1; num=n; } reader.close(); con.disconnect(); } catch(Exception e) { System.err.println(e); } bun=""; for (n=0;n num;n++){ bun=bun+data[n]; } } }
https://w.atwiki.jp/ce00582/pages/48.html
Private Sub Command1_Click() Dim a As Single Dim beta As Single Dim phi As Single Dim sig As Single Dim barm(1 To 10) As Single Dim t2 As Single Dim t1 As Single Dim t3 As Single Dim t4 As Single Dim t5 As Single Dim k(1 To 100) As Single Dim cx(-5 To 5, 1 To 10, 1 To 100) As Single Dim cp(-5 To 5, 1 To 10, 1 To 100) As Single Dim lx(-5 To 5, 1 To 10, 1 To 100) As Single Dim lp(-5 To 5, 1 To 10, 1 To 100) As Single Dim px(-5 To 5, 1 To 10, 1 To 100) As Single Dim ps(-5 To 5, 1 To 10, 1 To 100) As Single Dim checkc(-5 To 5, 1 To 10, 1 To 100) As Single Dim checkl(-5 To 5, 1 To 10, 1 To 100) As Single Dim checkp(-5 To 5, 1 To 10, 1 To 100) As Single Dim gotos(-5 To 5, 1 To 10, 1 To 100, 1 To 10) As Single Dim maki(-5 To 5, 1 To 10, 1 To 100, 1 To 10) As Single Dim v(0 To 2, -5 To 5, 1 To 10, 1 To 100) As Single Dim vs(0 To 2, -5 To 5, 1 To 10, 1 To 100) As Single Dim wedge(-5 To 5) As Single Dim ls As Single Dim ks As Single Dim s As Single Dim m As Single Dim n As Single Dim q As Single Dim m1 As Single Dim h As Single Dim n1 As Single Dim n2 As Single Dim n3 As Single Dim s1 As Single Dim s2 As Single Dim s3 As Single Dim q1 As Single Dim q2 As Single Dim q3 As Single Dim r1 As Single Dim c1 As Single Dim l1 As Single Dim y1 As Single Dim i1 As Single Dim ds As Single Dim dn As Single Dim dq As Single Dim e As Single Dim uc As Single Dim um As Single Dim mc As Single Dim p1 As Single Dim p2 As Single Dim p3 As Single Dim z1 As Single Dim z2 As Single Dim pxs As Single Dim pp As Single Dim ys As Single Dim vv1 As Single Dim vv2 As Single Dim vv0 As Single Dim price(-5 To 5, 1 To 10, 1 To 100) As Single Dim maxp(-5 To 5, 1 To 10, 1 To 100) As Single Dim pi As Single Dim pipi As Single Dim pipipi As Single Dim r(0 To 2, -5 To 5, 1 To 10, 1 To 100) As Single Dim dv(0 To 2) As Single Dim dr(0 To 2) As Single Dim rank As Single Dim prob(1 To 10, 1 To 10) As Single Open "c /pro146.txt" For Input As #81 Do Until EOF(81) Input #81, a1, a2, a3 m = a1 m1 = a2 prob(m, m1) = a3 Loop Close #81 phi = 0.9 Open "c /pro1551.txt" For Input As #2 Do Until EOF(2) Input #2, a1, a2, a3, a4, a5, a6 s = a1 m = a2 n = a3 lx(s, m, n) = a4 cx(s, m, n) = a5 px(s, m, n) = a6 Loop Close #2 Open "c /pro1552.txt" For Input As #72 Do Until EOF(72) Input #72, a1, a2, a3, a4, a5 s = a1 m = a2 n = a3 m1 = a4 gotos(s, m, n, m1) = a5 Loop Close #72 phi = 0.9 For s = -5 To 5 sig = 1 / (1 - phi) px1 = 1 + 0.01 * s px2 = ((1 - 0.1 * px1 ^ (1 - sig)) / 0.9) ^ (1 / (1 - sig)) wedge(s) = phi * px2 Next beta = 0.95 a = 0.33 ls = ((1 - a) * phi) / ((1 - a) * phi + 1) ks = ls * ((1 / beta - 1) / (a * phi)) ^ (1 / (a - 1)) h = 2 * ks / 100 For n = 1 To 100 k(n) = n * h Next t5 = 0 Do Until t5 1 t1 = 0 Do Until t1 100 For s = -5 To 5 For n = 10 To 90 For m = 1 To 10 uc = 0 k1 = k(n) + k(n) ^ a * lx(s, m, n) ^ (1 - a) - cx(s, m, n) n1 = k1 / h n2 = Int(n1) n3 = n2 + 1 For m1 = 1 To 10 s1 = gotos(s, m, n, m1) s2 = Int(s1) If s2 4 Then s2 = 4 s3 = s2 + 1 ds = (s1 - s2) * (cx(s3, m1, n2) - cx(s2, m1, n2)) dn = (n1 - n2) * (cx(s2, m1, n3) - cx(s2, m1, n2)) c1 = cx(s2, m1, n2) + ds + dn ds = (s1 - s2) * (lx(s3, m1, n2) - lx(s2, m1, n2)) dn = (n1 - n2) * (lx(s2, m1, n3) - lx(s2, m1, n2)) l1 = lx(s2, m1, n2) + ds + dn mc = wedge(s2) + (s1 - s2) * (wedge(s3) - wedge(s2)) r1 = mc * a * k1 ^ (a - 1) * l1 ^ (1 - a) uc = uc + prob(m, m1) * (beta * (1 + r1)) / c1 Next uc = uc cp(s, m, n) = 1 / uc w1 = wedge(s) * (1 - a) * k(n) ^ a * lx(s, m, n) ^ (-a) lp(s, m, n) = 1 - cx(s, m, n) / w1 Next Next Next e = 0 For s = -5 To 5 For n = 10 To 90 For m = 1 To 10 e = e + (cx(s, m, n) - cp(s, m, n)) ^ 2 + (lx(s, m, n) - lp(s, m, n)) ^ 2 Next Next Next For s = -5 To 5 For n = 10 To 90 For m = 1 To 10 cx(s, m, n) = cp(s, m, n) lx(s, m, n) = lp(s, m, n) Next Next Next If e 10 ^ (-5) Then t1 = 1000 Debug.Print 81, t1, e t1 = t1 + 1 Loop For m = 1 To 10 barm(m) = 20 * (0.95 + 0.01 * m) Next t2 = 0 Do Until t2 100 For s = -5 To 5 For n = 10 To 90 For m = 1 To 10 p1 = 0.9 * px(s, m, n) p2 = 1.1 * px(s, m, n) k1 = k(n) + k(n) ^ a * lx(s, m, n) ^ (1 - a) - cx(s, m, n) n1 = k1 / h n2 = Int(n1) n3 = n2 + 1 um = 0 For m1 = 1 To 10 s1 = gotos(s, m, n, m1) s2 = Int(s1) s3 = s2 + 1 If s3 5 Then s3 = 5 ds = (s1 - s2) * (cx(s3, m1, n2) - cx(s2, m1, n2)) dn = (n1 - n2) * (cx(s2, m1, n3) - cx(s2, m1, n2)) c1 = cx(s2, m1, n2) + ds + dn ds = (s1 - s2) * (lx(s3, m1, n2) - lx(s2, m1, n2)) dn = (n1 - n2) * (lx(s2, m1, n3) - lx(s2, m1, n2)) l1 = lx(s2, m1, n2) + ds + dn ds = (s1 - s2) * (px(s3, m1, n2) - px(s2, m1, n2)) dn = (n1 - n2) * (px(s2, m1, n3) - px(s2, m1, n2)) pxs = px(s2, m1, n2) + ds + dn mc = wedge(s2) + (s1 - s2) * (wedge(s3) - wedge(s2)) r1 = mc * a * k1 ^ (a - 1) * l1 ^ (1 - a) pp = pxs / p1 i1 = (1 + r1) * pp - 1 um = um + prob(m, m1) * (beta * i1) / (c1 * pp) Next z1 = um * barm(m) - p1 t3 = 0 Do Until t3 100 k1 = k(n) + k(n) ^ a * lx(s, m, n) ^ (1 - a) - cx(s, m, n) n1 = k1 / h n2 = Int(n1) n3 = n2 + 1 um = 0 For m1 = 1 To 10 s1 = gotos(s, m, n, m1) s2 = Int(s1) s3 = s2 + 1 If s3 5 Then s3 = 5 ds = (s1 - s2) * (cx(s3, m1, n2) - cx(s2, m1, n2)) dn = (n1 - n2) * (cx(s2, m1, n3) - cx(s2, m1, n2)) c1 = cx(s2, m1, n2) + ds + dn ds = (s1 - s2) * (lx(s3, m1, n2) - lx(s2, m1, n2)) dn = (n1 - n2) * (lx(s2, m1, n3) - lx(s2, m1, n2)) l1 = lx(s2, m1, n2) + ds + dn ds = (s1 - s2) * (px(s3, m1, n2) - px(s2, m1, n2)) dn = (n1 - n2) * (px(s2, m1, n3) - px(s2, m1, n2)) pxs = px(s2, m1, n2) + ds + dn mc = wedge(s2) + (s1 - s2) * (wedge(s3) - wedge(s2)) r1 = mc * a * k1 ^ (a - 1) * l1 ^ (1 - a) pp = pxs / p2 i1 = (1 + r1) * pp - 1 um = um + prob(m, m1) * (beta * i1) / (c1 * pp) Next z2 = um * barm(m) - p2 p3 = p2 - z2 * (p2 - p1) / (z2 - z1) p1 = p2 p2 = p3 z1 = z2 If (z2) ^ 2 10 ^ (-5) Then t3 = 10000 t3 = t3 + 1 Loop ps(s, m, n) = p2 Next Next Next e = 0 For s = -5 To 5 For n = 10 To 90 For m = 1 To 10 e = e + (px(s, m, n) - ps(s, m, n)) ^ 2 Next Next Next If e 10 ^ (-5) Then t2 = 1000 For s = -5 To 5 For n = 10 To 90 For m = 1 To 10 px(s, m, n) = ps(s, m, n) Next Next Next Debug.Print 82, t2, e t2 = t2 + 1 Loop For s = -5 To 5 For m = 1 To 10 For n = 10 To 90 ys = k(n) ^ a * lx(s, m, n) ^ (1 - a) pi = px(s, m, n) * ys - wedge(s) * px(s, m, n) * ys pipi = (phi - wedge(s)) * (ys / (phi - 1)) pipipi = (mr + wedge(s) * ys) / (px(s, m, n) * (phi - 1)) r(2, s, m, n) = pipipi / 2 r(1, s, m, n) = pipi - 2 * px(s, m, n) * r(2, s, m, n) r(0, s, m, n) = pi - r(1, s, m, n) * px(s, m, n) - r(2, s, m, n) * px(s, m, n) ^ 2 Next Next Next t4 = 0 Do Until t4 100 For s = -5 To 5 For m = 1 To 10 For n = 10 To 90 k1 = k(n) + k(n) ^ a * lx(s, m, n) ^ (1 - a) - cx(s, m, n) n1 = k1 / h n2 = Int(n1) n3 = n2 + 1 vv0 = 0 vv1 = 0 vv2 = 0 For m1 = 1 To 10 s1 = gotos(s, m, n, m1) s2 = Int(s1) s3 = s2 + 1 If s3 5 Then s3 = 5 ds = (s1 - s2) * (lx(s3, m1, n2) - lx(s2, m1, n2)) dn = (n1 - n2) * (lx(s2, m1, n3) - lx(s2, m1, n2)) l1 = lx(s2, m1, n2) + ds + dn ds = (s1 - s2) * (px(s3, m1, n2) - px(s2, m1, n2)) dn = (n1 - n2) * (px(s2, m1, n3) - px(s2, m1, n2)) pxs = px(s2, m1, n2) + ds + dn mc = wedge(s2) + (s1 - s2) * (wedge(s3) - wedge(s2)) r1 = mc * a * k1 ^ (a - 1) * l1 ^ (1 - a) pp = pxs / px(s, m, n) i1 = (1 + r1) * pp - 1 For rank = 0 To 2 ds = (s1 - s2) * (v(rank, s3, m1, n2) - v(rank, s2, m1, n2)) dn = (n1 - n2) * (v(rank, s2, m1, n3) - v(rank, s2, m1, n2)) dv(rank) = v(rank, s2, m1, n2) + ds + dn Next For rank = 0 To 2 ds = (s1 - s2) * (r(rank, s3, m1, n2) - r(rank, s2, m1, n2)) dn = (n1 - n2) * (r(rank, s2, m1, n3) - r(rank, s2, m1, n2)) dr(rank) = r(rank, s2, m1, n2) + ds + dn Next vv0 = vv0 + prob(m, m1) * (dr(0) + 0.8 * dv(0)) / (1 + i1) vv1 = vv1 + prob(m, m1) * (dr(1) + 0.8 * dv(1)) / (1 + i1) vv2 = vv2 + prob(m, m1) * (dr(2) + 0.8 * dv(2)) / (1 + i1) Next vs(0, s, m, n) = vv0 vs(1, s, m, n) = vv1 vs(2, s, m, n) = vv2 Next Next Next e = 0 For s = -5 To 5 For m = 1 To 10 For n = 10 To 90 For q = 0 To 2 e = e + (v(q, s, m, n) - vs(q, s, m, n)) ^ 2 Next Next Next Next For s = -5 To 5 For m = 1 To 10 For n = 10 To 90 For q = 0 To 2 v(q, s, m, n) = vs(q, s, m, n) Next Next Next Next If e 10 ^ (-5) Then t4 = 1000 Debug.Print 83, t4, e t4 = t4 + 1 Loop For s = -5 To 5 For m = 1 To 10 For n = 10 To 90 price(s, m, n) = -v(1, s, m, n) / (2 * v(2, s, m, n)) If price(s, m, n) 1.05 * px(s, m, n) Then price(s, m, n) = 1.05 * px(s, m, n) If price(s, m, n) 0.95 * px(s, m, n) Then price(s, m, n) = 0.95 * px(s, m, n) Next Next Next For s = -5 To 5 For m = 1 To 10 For n = 10 To 90 p2 = price(s, m, n) p1 = (1 + 0.01 * s) * px(s, m, n) p3 = (0.8 * p1 ^ (1 - sig) + 0.2 * p2 ^ (1 - sig)) ^ (1 / (1 - sig)) k1 = k(n) + k(n) ^ a * lx(s, m, n) ^ (1 - a) - cx(s, m, n) n1 = k1 / h n2 = Int(n1) n3 = n2 + 1 For m1 = 1 To 10 s1 = gotos(s, m, n, m1) s1 = gotos(s, m, n, m1) s2 = Int(s1) s3 = s2 + 1 If s3 5 Then s3 = 5 ds = (s1 - s2) * (px(s3, m1, n2) - px(s2, m1, n2)) dn = (n1 - n2) * (px(s2, m1, n3) - px(s2, m1, n2)) pxs = px(s2, m1, n2) + ds + dn gt = 100 * (p3 / pxs - 1) If gt 5 Then gt = 5 If gt -5 Then gt = -5 maki(s, m, n, m1) = gt Next Next Next Next For s = -5 To 5 For m = 1 To 10 For n = 10 To 90 For m1 = 1 To 10 gotos(s, m, n, m1) = maki(s, m, n, m1) Next Next Next Next e = 0 For s = -5 To 5 For m = 1 To 10 For n = 10 To 90 e = e + (checkc(s, m, n) - cx(s, m, n)) ^ 2 + (checkl(s, m, n) - lx(s, m, n)) ^ 2 + (checkp(s, m, n) - px(s, m, n)) ^ 2 e = e + (price(s, m, n) - maxp(s, m, n)) ^ 2 Next Next Next For s = -5 To 5 For n = 10 To 90 For m = 1 To 10 checkc(s, m, n) = cx(s, m, n) checkl(s, m, n) = lx(s, m, n) checkp(s, m, n) = px(s, m, n) maxp(s, m, n) = price(s, m, n) Next Next Next If e 10 ^ (-5) Then t5 = 1000 Debug.Print 84, t5, e t5 = t5 + 1 Loop Open "c /pro1551.txt" For Output As #1 For s = -5 To 5 For m = 1 To 10 For n = 1 To 100 Write #1, s, m, n, lx(s, m, n), cx(s, m, n), px(s, m, n) Next Next Next Close #1 Open "c /pro1552.txt" For Output As #12 For s = -5 To 5 For m = 1 To 10 For n = 1 To 100 For m1 = 1 To 10 Write #12, s, m, n, m1, gotos(s, m, n, m1) Next Next Next Next Close #12 Dim mm(1 To 100) As Single For t = 1 To 100 mm(t) = 5 Next mm(1) = 8 sx = 0 mx = 5 nx = 50 k1 = k(50) For t = 1 To 100 s1 = sx s2 = Int(s1) s3 = s2 + 1 n1 = nx n2 = Int(n1) n3 = n2 + 1 m1 = mm(t) ds = (s1 - s2) * (gotos(s3, mx, n2, m1) - gotos(s2, mx, n2, m1)) dn = (n1 - n2) * (gotos(s2, mx, n3, m1) - gotos(s2, mx, n2, m1)) s1 = gotos(s2, mx, n2, m1) + ds + dn s2 = Int(s1) If s2 4 Then s2 = 4 s3 = s2 + 1 ds = (s1 - s2) * (cx(s3, m1, n2) - cx(s2, m1, n2)) dn = (n1 - n2) * (cx(s2, m1, n3) - cx(s2, m1, n2)) c1 = cx(s2, m1, n2) + ds + dn ds = (s1 - s2) * (lx(s3, m1, n2) - lx(s2, m1, n2)) dn = (n1 - n2) * (lx(s2, m1, n3) - lx(s2, m1, n2)) l1 = lx(s2, m1, n2) + ds + dn y1 = k1 ^ a * l1 ^ (1 - a) k1 = k1 + k1 ^ a * l1 ^ (1 - a) - c1 sx = s1 mx = m1 nx = k1 / h Debug.Print y1 Next End Sub
https://w.atwiki.jp/ce00582/pages/5314.html
class game{ int[] year=new int[1000]; int[] month=new int[1000]; int[] week=new int[1000]; String[][] music=new String[1000][100]; String[][] artist=new String[1000][100]; String[][] point=new String[1000][100]; int[][] p=new int[1000][100]; String[][] date=new String[1000][100]; int datanumber,s,sx; int p1,p2; String[] adic=new String[50000]; String[] mdic=new String[50000]; int articlenumber; int musicnumber,artistnumber; public static void main(String [] args) { game test=new game(); } game(){ getdata(); System.out.println(music[s][1]); } void getdata(){ catchdata sub=new catchdata(); sub.makedata(); year=sub.year; month=sub.month; week=sub.week; artist=sub.artist; date=sub.date; music=sub.music; point=sub.point; artistnumber=sub.artistnumber; adic=sub.adic; mdic=sub.mdic; musicnumber=sub.musicnumber; articlenumber=sub.articlenumber; for(s=1;s articlenumber+1;s++){ for(sx=1;sx 31;sx++){ p[s][sx]=Integer.parseInt(point[s][sx]); } } } }
https://w.atwiki.jp/ce00582/pages/47.html
Private Sub Command1_Click() Dim ks As Single Dim a As Single Dim beta As Single Dim r1 As Single Dim n As Single Dim cx(1 To 10, 1 To 100) As Single Dim cp(1 To 10, 1 To 100) As Single Dim lx(1 To 10, 1 To 100) As Single Dim lp(1 To 10, 1 To 100) As Single Dim k(1 To 100) As Single Dim h As Single Dim k1 As Single Dim n1 As Single Dim n2 As Single Dim n3 As Single Dim c1 As Single Dim e As Single Dim m As Single Dim de As Single Dim th(1 To 10) As Single de = 0.05 For m = 1 To 10 th(m) = 0.95 + 0.01 * m Next beta = 0.95 a = 0.33 ls = 0.5 ks = ls * ((1 / beta + de - 1) / a) ^ (1 / (a - 1)) h = 2 * ks / 100 For n = 1 To 100 k(n) = n * h For m = 1 To 10 lx(m, n) = ls cx(m, n) = th(m) * k(n) ^ a * lx(m, n) ^ (1 - a) - de * k(n) Next Next t1 = 0 Do Until t1 100 For m = 1 To 10 For n = 10 To 90 k1 = k(n) + th(m) * k(n) ^ a * lx(m, n) ^ (1 - a) - cx(m, n) - de * k(n) n1 = k1 / h n2 = Int(n1) n3 = n2 + 1 uc = 0 For m1 = 1 To 10 c1 = cx(m1, n2) + (n1 - n2) * (cx(m1, n3) - cx(m1, n2)) l1 = lx(m1, n2) + (n1 - n2) * (lx(m1, n3) - lx(m1, n2)) r1 = th(m1) * a * k1 ^ (a - 1) * l1 ^ (1 - a) - de uc = uc + (beta * (1 + r1)) / c1 Next uc = 0.1 * uc cp(m, n) = 1 / uc w1 = (1 - a) * th(m) + k(n) ^ a * lx(m, n) ^ (-a) lp(m, n) = 1 - cx(m, n) / w1 Next Next e = 0 For m = 1 To 10 For n = 10 To 90 e = e + (cx(m, n) - cp(m, n)) ^ 2 + (lx(m, n) - lp(m, n)) ^ 2 Next Next For m = 1 To 10 For n = 10 To 90 lx(m, n) = lp(m, n) cx(m, n) = cp(m, n) Next Next If e 10 ^ (-5) Then t1 = 1000 t1 = t1 + 1 Debug.Print t1, e Loop End Sub