VS Code 外部.batファイルを起動

VS Code メニューから[表示]→[コマンドパレット]→「task」と入力→[タスク:タスクの構成]→[テンプレートから task.json を生成]→[others 任意の外部コマンドを実行する例]

「task.json」に以下を入力。(「”command”: “start .bat”,」を「”command”: “start 任意.bat”,」に)

{
    "version": "2.0.0",
    "tasks": 
    [
        {
            "label": "Save All",
            "command": "saveAll",
            "type": "shell",
        },
        {
            "label": "Bat",
            "command": "start .bat",
            "type": "shell",
            "options": { "cwd": "${fileDirname}" },
        },
        {
            "label": "Exit",
            "command": "exit",
            "type": "shell",
        },
        {
            "label": "Build",
            "dependsOn": ["Save All", "Bat", "Exit"]
        },
    ],
}

続いてショッートカットキーの作成もしましょう。
まずVS Codeのメニューから[表示]→[コマンドパレット]と押し、出て来た検索ボックスに「キーボード」と入力して
「基本設定:キーボード ショートカットを開く(JSON)」を押してください。


出て来た「keybindings.json」に以下の内容を記入

[
    {
        "key": "F9",
        "command": "workbench.action.tasks.runTask",
        "args": "Build",
    },
]

これで作業中のフォルダから開いたソースの上で「F9」キーを押すと、自動で開いているすべてのファイルを上書き保存した後「.bat(任意名)」がターミナルに実行されます。

WRH-300WH3-S PS3(CECHB00 60GB) インターネット接続

PS3の後ろのバーコードシールの下に最後の方にCECH…と型番が記載されていますが、CECH-Bの場合インターネット接続する場合「無線LAN接続」はできません(20GBを60GBに拡張したものも含まれます)「有線LAN」での接続になります。

・CECHB00のbluetoothはiphoneに接続できないのでテザリングは無理です。

・PS3にインターネット接続してもPS3アプリのamazon primeやhuluは会員登録(有料)しないと観れません。

ですがご自宅の環境などで、「有線LAN」がPS3機器まで届かず、「無線LAN中継器(elecom製、楽天やamazonで買うとさらに安く購入できます)」と言うものを使ってインターネットに接続したいケースが出ます。

しかし、このelecomの無線LAN中継器設定がされたかどうかが少々分かりづらいです。

まずWRH-300WH3-Sを付属のUSBでPCに繋ぎ電源を供給します、その後WRH-300WH3-S機器背面にある小さな穴(リセットボタン)を針か何かで10秒程押します、すると前面のWPS/RESETのランプが点灯します、その後2分ほどでUSB接続されたPCのネットワーク一覧の所に「elecom2g-e6470e」などのネットワーク名が現れたらそのネットワークに接続します(初回子機のPASSワード入力)、ですが1分ほど経って下のタスクバーにあるネットワークアイコンには黄色い三角が付き、ネットワーク名の所にも「インターネット接続なし、…」(windows10の場合)の表示になります、しかしこれで良くて、次にインターネットブラウザを開きアドレスバーに「http://wrh-300xx3.setup」と入力しエンターキーを押します、するとelecomポータブルルーターの設定画面が開きます、そして左のメニュー欄から動作モード選択を選び、子機モードを選び更新を押します、すると今回私が一番四苦八苦した場面で、10秒ぐらい待つとポータブルルーター再起動中画面になりますが、残り22秒の所まで行くとPCのタスクバーのネットワークアイコンが切れます、そして残り0秒になった時点で「http://wrh-300xx3.setupに接続できません」と言ったポップアップが出ます、しかしこれもこれで良くて、次に無線親機とポータブルルーター(子機、この中継器)を「有線LAN」で繋ぎます、次に無線親機の「WPS」ボタンを5秒程押し親機のランプが点滅したらボタンを放します、その後ポータブルルーター(子機)の「WPS」ボタンを5秒程押しポータブルルーター(子機)のランプが点滅したらボタンを放します、そして親機子機それぞれランプ点滅が消えたら(5分程、消灯後何も起こりません)設定は終了です。あとはPS3に「有線LAN」でポータタブルルーター(子機)を繋いでPS3の設定を終え、PS3の設定画面で「インターネット接続:成功」と出れば無事インターネット接続の完了です。

なおこのWRH-300WH3-S接続の場合、電源供給をPS3のコントローラUSB差込口に差しておけばPCは必要ありません。

DISLINとgfortranでWindowsGUI32bit standaloneアプリケーション

まずプログラミング言語「FORTRAN」の環境を整えましょう。
「GNU FORTRAN」を入手したいので「mingw-get-setup.exe(ダウンローダー)」をダウンロードして起動し[Install]を押して[change]を押して[好みのパテーション\MinGW\]を設定しましょう(インストールフォルダを変えたい場合[MinGW]フォルダは手動で作成しなければなりません)。
[continue]を押せばダウンローダーのインストールが始まります。再び[continue]を押すと
GNUのコンパイラ群のインストーラーアプリケーションが立ち上がります。
[mingw32-gcc-fortran]の個所を[右クリック]して[Mark for Installation]で
インストールしたいコンパイラをチェック選択します。(gccコンパイラも自動で付与されます)
その後、左上アプリケーションメニューから[Installation]を押し[Apply Changes]を押し出てきた

ウィンドウで[Apply]を押し、ダウンロードインストールが進み終わると[close]を押せるようになるので押してください。これで「GNU FORTRAN」(gfortran)のインストールは終了です。32bit版をインストールした理由は64bit版で作ったアプリケーションは64bit環境でしか動かないので、広くご自身の作ったアプリケーションを使用してもらうためにも32bit版を採用しました。

続いて「DISLIN」(gui tool kit:グラフィックユーザーインターフェースアプリケーション作成を可能にしてくれるもの)をダウンロードします。解凍してできたフォルダから[setup.exe]を探して起動します。[OK]を押してインストールするフォルダを指定し[OK]を押します。これで「DISLIN」のインストールは終了です。

次に大事なのが環境変数にパスを通しましょう。エクルプローラの[PC]を右クリックし[プロパティ]を押します、その後左側にある[システムの詳細設定]を押し、下側にある[環境変数]を押します、その後上側の[Path]を押し選択し[編集]を押して[c:\MinGW\bin]などの(binは絶対、パテーションは「GNU インストーラー」をインストールした場所)パスを追加し、さらに「DISLIN」の[c:\dislin\win](これも「DISLIN」をインストールしたパテーション等)パスも追加し、それぞれ[OK]を押し元の状態まで戻ってきたらパスの設定は終了です。

次に下のサンプルプログラムで使用する「dlink(.bat)」を使用するためにも[c:\dislin\win\dlink.bat](パテーション等任意)を右クリックして編集を押します、そして[set _dislin=c:\dislin]行のパテーションの英語一文字を「DISLIN」の環境変数パスと同じ英字一文字(ドライブの場所)に編集して保存してください。

サンプルプログラムを載せます→「standalone win exe.zip
complie.batをclickして起動してみて下さい、コンパイル後「a.exe」をclickで起動できます。

C# eval内にフォーム

C# eval内でフォームを扱う事が出来ます。ChatGPT 3.5製です。

using System;
using System.CodeDom.Compiler;
using System.IO;
using System.Reflection;
using System.Windows.Forms;
using Microsoft.CSharp; // 必要な名前空間を追加

class Program
{
    static void Main()
    {
        // ファイルパスを取得
        string sourceFile = GenerateSafeSourceCode();

        // コンパイルパラメータの設定
        CompilerParameters parameters = new CompilerParameters();
        parameters.GenerateExecutable = true;
        parameters.OutputAssembly = "b.exe";
        parameters.CompilerOptions = "/target:winexe";

        // .NET Frameworkディレクトリ内のアセンブリを自動的に追加する
        string dotNetFrameworkDirectory = GetDotNetFrameworkDirectory();
        if (dotNetFrameworkDirectory != null)
        {
            string[] frameworkAssemblies = Directory.GetFiles(dotNetFrameworkDirectory, "*.dll");
            foreach (string assemblyPath in frameworkAssemblies)
            {
                // アセンブリが正しい形式のものであるかどうかを確認し、正しくない場合は除外する
                if (IsValidAssembly(assemblyPath))
                {
                    parameters.ReferencedAssemblies.Add(assemblyPath);
                }
            }
        }
        else
        {
            Console.WriteLine(".NET Frameworkディレクトリが見つかりませんでした。");
            return;
        }

        // C#ファイルをコンパイル
        CompilerResults cr = CompileCSharpFile(sourceFile, parameters);

        if (cr.Errors.HasErrors)
        {
            Console.WriteLine("コンパイルエラーが発生しました:");
            foreach (CompilerError error in cr.Errors)
            {
                Console.WriteLine(""+error.FileName+"("+error.Line+","+error.Column+"): "+error.ErrorText);
            }
        }
        else
        {
            Assembly assembly = cr.CompiledAssembly;
            MethodInfo entryPoint = assembly.EntryPoint;
            if (entryPoint != null)
            {
                entryPoint.Invoke(null, null);
            }
            else
            {
                Console.WriteLine("エントリーポイントが見つかりませんでした。");
            }
        }
    }

    static string GenerateSafeSourceCode()
    {
        string sourceCode = @"
            using System;
            using System.Windows.Forms;

            class CSHello
            {
                static void Main()
                {
                    Console.WriteLine(""Hello C# World!"");
                    
                    // ユーザーに確認を求めるダイアログを表示
                    DialogResult result = MessageBox.Show(""Do you want to proceed?"", ""Confirmation"", MessageBoxButtons.OKCancel);
                    
                    // ユーザーがOKを選択した場合のみ、MessageBoxを表示
                    if (result == DialogResult.OK)
                    {
                        MessageBox.Show(""ok"");
                    }
                }
            }";

        // ファイルに書き込み
        using (StreamWriter writer = new StreamWriter("b.cs"))
        {
            writer.Write(sourceCode);
        }

        return "b.cs";
    }

    static CompilerResults CompileCSharpFile(string sourceFile, CompilerParameters parameters)
    {
        using (CSharpCodeProvider provider = new CSharpCodeProvider())
        {
            ICodeCompiler compiler = provider.CreateCompiler();
            return compiler.CompileAssemblyFromFile(parameters, sourceFile);
        }
    }

    static string GetDotNetFrameworkDirectory()
    {
        string dotNetFrameworkDirectory = null;
        try
        {
            dotNetFrameworkDirectory = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory();
        }
        catch (Exception)
        {
            Console.WriteLine("ランタイムディレクトリを取得できませんでした。");
        }
        return dotNetFrameworkDirectory;
    }

    static bool IsValidAssembly(string assemblyPath)
    {
        try
        {
            // Assemblyクラスを使用するため、System.Reflectionを利用
            Assembly.LoadFrom(assemblyPath);
            // ここで、署名済みアセンブリのみを許可するなどの追加の検証を行うことも可能
            return true;
        }
        catch (Exception)
        {
            // 例外が発生した場合は正しい形式のアセンブリではないと見なす
            return false;
        }
    }
}

「安全な接続ではありません」

ブラウザに「安全な接続ではありません」が出たら
時計を現在の「年、月、日、時間」を設定し
時計地域も「大阪、東京」にするとうまくいきました。

C言語 Win32API token トークン 文字列 分割 区切る ぽいの作った

//トークン、区切って文字列を表示します。
#include<windows.h>

WINAPI WinMain(HINSTANCE i,HINSTANCE p,LPSTR c,int n)
{
	char s[]={"xx++;bb;"},*q,*a,t[256]={0};	BOOL b=0;

	for(q=a=s;*q;q++)
	{
		switch(*q)
		{
			case '=':
			case '+':
			case '-':
			case '*':
			case '/':
			case '%':
			case '|':
			case '&':
			case '^':
			case '~':
			case '!':
			case '>':
			case '<':
			case '[':
			case ']':
			case '(':
			case ')':
			case '{':
			case '}':
			case ';':
			case '	':
			case ' ':
			case ',':
			case '?':
			case ':':
			case 10:
			case 34:
			case 39:
				if(!b)
				{
					lstrcpyn(t,a,q-a+1);
					MessageBox(0,t,0,0);
					b=1;
				}
				break;

			//case '':	break;
			default:
				if(b){	a=q;	b=0;	}
				break;
		}
	}
	//lstrcpyn(t,a,q-a+1);
	//MessageBox(0,t,0,0);
}

2DRPGTOOL

RPG作成ソフト「2DRPGTOOL」が出来たのでダウンロードしてみてください。


ダウンロード(サイトリンク後、Direct downloadをclick)

    質問バグ報告雑談 → 掲示板 ← 設置致しました。
    ご気軽にどうぞ。

    ドット絵編集には「mspaint」をどうぞ。

    歩行キャラクター画像リンク

    歩行グラリンク

    歩行キャラ素材リンク

    キャラクター画像リンク

    過去の修正履歴

    PNGをどうしてももっと圧縮したい場合、GoogleのPNG圧縮技術「zopflipng」をダウンロード解凍し、コマンドプロンプトを起動し、コマンドプロンプトに直接「zopflipng.exe」をドラッグし

    "(フルパス)\zopflipng.exe" -m "(inフルパス).png" "(outフルパス).png"

    と入力し(in/outそれぞれ対象ファイルも直接ドラッグできます)そのままEnterを押しコマンドプロンプトの表示が待機状態になり、20分程待って圧縮サイズが数字で示されれば圧縮完了です。

    BCC インラインアセンブラ tasm32

    Borland C++ 5.5.1ではc言語ソースの中にアセンブラ表記を含ませアセンブルコンパイルする事が出来ます。
    tasm」のダウンロードでファイルを落とし、「tasm32.exe」を[borland]->[bcc55]->[bin]のフォルダに配置すると、以下のように記述すればインラインアセンブラが使用できます。

    例:
    
    int func(int x)
    {
    	int y,r;
    
    	y=16;
    
    	_asm{
    		mov	eax,	x
    		mov	ebx,	y
    		mov	ecx,	0
    		xor	edx,	edx
    
    		add	eax,	ebx
    		mov	r,	eax
    	}
    
    	return r;
    }