exeでやろうと思った当初はタイマーだけ使って時間積み重ねてけばいーんじゃね?と考えたけどスプレッドシートでGASやって配列に取り込んでどうのこうのやってたんでその流れで配列に組み込んでどうたらこうたらで。ライトも配列最初に作ってforで回して時刻を見るってやってるけど更にフェザーでも作ってタイマーのonoffだけでやってみっかなとは思うけどこれ一番厄介かできないかも?中断する時にどっからタイマーの値を?は取れるとしても再開時、何を基準に計算すりゃいいのか?初回の日時を記録して結局次回起動までの間を埋める計算しなきゃならないわけで。この、計算をしたくねーわけだ。
オチとしては
ライトのキャプ使ってスタートの記録、そこからタイマーをそれぞれ値をセットして走らせ、走りながら到達時刻を「配列」にしま・・・・
やる意味ねぇ(笑)どー考えても途中でライトになってるわ。
荷物500個で2型が降ってくるけどそれまでにゴム、必死で生Pを木に変えても50個は無理だぜよ、と。5型にして改造してタイヤ履き替えて荷枠を3個にしない限りはヴォルフでいいしぃ
ぶっちゃけ見た目に反してブーンの性能がいいんで今回は特に気にしてない(強がり
キ、キティ白黒両方2枠にしたしぃ(震え
まだゼロから再開して2か月しかやってねーんだもの、誰よりも貪欲で
「遠い」からやめっかー、と、欲しいから頑張ろうが常に頭の中スクランブルしてるんで
むしろ、前に裕福な(水面下はアレなので疲弊でやめてるが)プレイしてたから
もうああいうのはいいわ、とは思いつつやっぱ5型改はメモリアルとして手元に欲しいね。
あのでかいのは要りません、持ってる事自体はステータス足りえるけど費用対利益が一番悪くてどーにもこーにも。
最前面で固定してるけどフルスクリーン、スタート押すと最小化するやつね
には優先度で勝てない仕様になってるので仮想フルスクリーンでしか前に出ません
フルスクじゃないと重くてやってらんねーんだよって方は
\ 諦 め て く ら は い /
世にはそれでもフルスクの上に表示してたりゲームの描画に割り込んで
情報表示したり系の「チート」があるけど
そういうのはそれこそゲームを作れるレベルの人がやってるって話なのと
できたとしてもMODを許可してないarcheでそれやるとBAN喰らいます
以上。
巡航船状況表示 c#
ソースコード
using System;using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using Windows.Storage;
using Windows.Storage.Streams;
using Windows.Graphics.Imaging;
using Windows.Media.Ocr;
using System.Windows.Forms;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
using System.Linq;
namespace shipinfo
{
public partial class Form1 : Form
{
private DateTime dat1, dat4;
private TimeSpan dat2, dat3, wts, s2t, t2s, datA, datB;
private DateTime[] sts = new DateTime[450];
private SoftwareBitmap softwareBitmap;
private int[] rett;
private string[] s2;
private string now1;
private int nv1, nv2;
private async Task<SoftwareBitmap> GetSoftwareSnapShot(Bitmap snap)
{
var folder = Directory.GetCurrentDirectory();
var imageName = "ScreenCapture.bmp";
StorageFolder appFolder = await StorageFolder.GetFolderFromPathAsync(@folder);
snap.Save(imageName, ImageFormat.MemoryBmp);
var bmpFile = await appFolder.GetFileAsync(imageName);
using (IRandomAccessStream stream = await bmpFile.OpenAsync(FileAccessMode.Read))
{
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
softwareBitmap = await decoder.GetSoftwareBitmapAsync();
}
File.Delete(folder + "\\" + imageName);
return softwareBitmap;
}
private async Task<OcrResult> RecognizeText(SoftwareBitmap snap)
{
OcrEngine ocrEngine = OcrEngine.TryCreateFromUserProfileLanguages();
OcrResult ocrResult = await ocrEngine.RecognizeAsync(snap);
return ocrResult;
}
private async void button1_Click(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(120, 42);
Graphics g = Graphics.FromImage(bitmap);
Point p = panel1.PointToScreen(new Point(0, 0));
g.CopyFromScreen(new Point(p.X, p.Y), new Point(0, 0), bitmap.Size);
Bitmap bmpOrijinal = new Bitmap(bitmap);
int scale = 2;
Bitmap bmpResize = new Bitmap(
bmpOrijinal,
bmpOrijinal.Width * scale,
bmpOrijinal.Height * scale
);
pictureBox1.Image = bmpResize;
SoftwareBitmap y = await GetSoftwareSnapShot(bmpResize);
OcrResult t = await RecognizeText(y);
string tt = t.Text;
rett = Regex.Matches(tt, "[0-9]+")
.Cast<Match>()
.Select(m => int.Parse(m.Value))
.ToArray();
if (rett.Length > 2)
{
textBox2.Text = rett[0].ToString() + ":" + rett[1].ToString() + ":" + rett[2].ToString();
}
else
{
textBox2.Text = "00:00:00";
}
now1 = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
textBox1.Text = now1;
g.Dispose();
}
private void button2_Click(object sender, EventArgs e)
{
string[] charsToRemove = new string[] { "/", ":", " " };
foreach (var c in charsToRemove)
{
now1 = now1.Replace(c, string.Empty);
}
s2[2] = now1;
dat2 = new TimeSpan(rett[0], rett[1], rett[2]);//荷残
s2[3] = rett[0].ToString("D2") + rett[1].ToString("D2") + rett[2].ToString("D2");
writefile();
re_start();
}
private void button3_Click(object sender, EventArgs e)
{
dat3 = new TimeSpan(00, nv1, nv2);//調整用
s2[4] = nv1.ToString("D2") + nv2.ToString("D2");
writefile();
re_start();
}
private void numericUpDown2_ValueChanged(object sender, EventArgs e)
{
nv2 = (int)numericUpDown2.Value;
}
private void Form1_HelpButtonClicked(object sender, System.ComponentModel.CancelEventArgs e)
{
this.Height = 262;
}
private void Form1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Height = 72;
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
nv1 = (int)numericUpDown1.Value;
}
private void Form1_Move(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(130, 42);
Graphics g = Graphics.FromImage(bitmap);
Point p = panel1.PointToScreen(new Point(0, 0));
g.CopyFromScreen(new Point(p.X, p.Y), new Point(0, 0), bitmap.Size);
Bitmap bmpOrijinal = new Bitmap(bitmap);
int scale = 2;
Bitmap bmpResize = new Bitmap(
bmpOrijinal,
bmpOrijinal.Width * scale,
bmpOrijinal.Height * scale
);
pictureBox1.Image = bmpResize;
}
public Form1()
{
InitializeComponent();
this.TransparencyKey = Color.Magenta;
}
private void Form1_Load(object sender, EventArgs e)
{
re_start();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
writefile();
}
private void re_start()
{
using (StreamReader sr = new StreamReader(@"data.txt"))
{
string s1 = sr.ReadToEnd();
s1 = s1.Replace(Environment.NewLine, "\r");
s1 = s1.Trim('\r');
s2 = s1.Split('\r');
foreach (string item in s2)
{
if (item == "end") break;
}
Console.WriteLine(s2[4]+"303");
}
this.SetDesktopLocation(int.Parse(s2[0]), int.Parse(s2[1]));
Console.WriteLine("606");
string tmpe = (s2[2].Substring(0, 4) + "/" +
s2[2].Substring(4, 2) + "/" +
s2[2].Substring(6, 2) + " " +
s2[2].Substring(8, 2) + ":" +
s2[2].Substring(10, 2) + ":" +
s2[2].Substring(12, 2));
dat1 = DateTime.Parse(tmpe);
Console.WriteLine("604");
datA = new TimeSpan(24, 0, 0);
Console.WriteLine("603");
dat2 = new TimeSpan(int.Parse(s2[3].Substring(0, 2)), int.Parse(s2[3].Substring(2, 2)), int.Parse(s2[3].Substring(4, 2)));//荷残
Console.WriteLine("602");
Console.WriteLine(int.Parse(s2[3].Substring(4, 2)));
dat3 = new TimeSpan(00, int.Parse(s2[4].Substring(0, 2)), int.Parse(s2[4].Substring(2, 2)));//調整用
numericUpDown2.Value = int.Parse(s2[4].Substring(2, 2));
numericUpDown1.Value = int.Parse(s2[4].Substring(0, 2));
dat4 = dat1 - datA;
Console.WriteLine(dat3);
datB = new TimeSpan(0, 10, 16);
if (s2[4] == "0000")
{
dat4 = dat4 + dat2 + datB;
}
else
{
dat4 = dat4 + dat2 + datB + dat3;
}
wts = TimeSpan.Parse("0:20:0.0");
s2t = TimeSpan.Parse("0:10:21.150");
t2s = TimeSpan.Parse("0:10:47.200");
var dat5 = dat4 + wts;//一発目ツイン出航
sts[0] = dat5;
DateTime test;
for (int i = 1; i <= 432; i += 2)
{
sts[i] = sts[i - 1] + wts + t2s;
test = sts[i];
sts[i + 1] = test + wts + s2t;
}
}
private void writefile()
{
using (var writer = new System.IO.StreamWriter(@"data.txt"))
{
writer.WriteLine(this.Location.X);
writer.WriteLine(this.Location.Y);
writer.WriteLine(s2[2]);
writer.WriteLine(s2[3]);
writer.WriteLine(s2[4]);
writer.Write("end");
}
}
private void timer1_Tick(object sender, EventArgs e)
{
DateTime now = DateTime.Now;
this.Text = now.ToString("HH : mm : ss MM/dd ");
for (int ii = 1; ii <= 433; ii++)
{
if (ii % 2 == 0)
{
if (now > sts[ii] - wts - s2t && now < sts[ii] - wts)
{
label1.Text = ("ツインクラウンへ航行中");
string fix = (sts[ii] - wts - now).ToString();
string fix2 = fix.Substring(3, 5);
label2.Text = fix2;
string[] charsToRemove = new string[] { ":" };
foreach (var c in charsToRemove)
{
fix2 = fix2.Replace(c, string.Empty);
}
progressBar1.Minimum = 0;
progressBar1.Maximum = 1021;
progressBar1.Value = 1021-int.Parse(fix2);
break;
}
if (now > sts[ii] - wts && now < sts[ii])
{
label1.Text = ("ツインクラウンに停泊中");
string fix = (sts[ii] - now).ToString();
string fix2 = fix.Substring(3, 5);
label2.Text = fix2;
string[] charsToRemove = new string[] { ":" };
foreach (var c in charsToRemove)
{
fix2 = fix2.Replace(c, string.Empty);
}
progressBar1.Minimum = 0;
progressBar1.Maximum = 2000;
progressBar1.Value = int.Parse(fix2);
break;
}
}
else
{
if (sts[ii] - wts - t2s < now && sts[ii] - wts > now)
{
label1.Text = ("サンライズ半島へ航行中");
string fix = (sts[ii] - wts - now).ToString();
string fix2 = fix.Substring(3, 5);
label2.Text = fix2;
string[] charsToRemove = new string[] { ":" };
foreach (var c in charsToRemove)
{
fix2 = fix2.Replace(c, string.Empty);
}
progressBar1.Minimum = 0;
progressBar1.Maximum = 1047;
progressBar1.Value = 1047-int.Parse(fix2);
break;
}
if (now > sts[ii] - wts && now < sts[ii])
{
label1.Text = ("サンライズ半島に停泊中");
string fix = (sts[ii] - now).ToString();
string fix2 = fix.Substring(3, 5);
label2.Text = fix2;
string[] charsToRemove = new string[] { ":" };
foreach (var c in charsToRemove)
{
fix2 = fix2.Replace(c, string.Empty);
}
progressBar1.Minimum = 0;
progressBar1.Maximum = 2000;
progressBar1.Value = int.Parse(fix2);
break;
}
}
}
}
}
}
SoftwareBitmap y = await GetSoftwareSnapShot(bmpResize);
OcrResult t = await RecognizeText(y);
そういう作りなので画像をファイルに書き出してそれをまた読むという無駄の塊で
9.9割がそのコードしか展示してない
書き出した「知ってるモン同士が冗談で見せ合う憩いの場」的なのが多いので
コピペマンにゃ辛いんですわ(基本やれアホ
欲しいのはGetSoftwareSnapShotの下りのファイル関連を削ってbmpを直接渡す方法
datetime、string、int 頭痛い、眠い、ゲームできない(笑)
に比べるとprogressbarはアホかってレベルのイージーさ
if (now > sts[ii] - wts - s2t && now < sts[ii] - wts)
10:21をそのまま1021にしてカウントダウンするだけというプッツン設計(笑)
麓丸禄 ふもと まる ろく で変換できます、はい(手モミモミ
?押してフォーム下に伸びてフォームの余白ダブクリで縮む
datatxtを
いいから、はよzip寄越せ的なレデェースェーンドズェントルメェーンにおかれましては
https://www.dropbox.com/s/lul6agfebyme28y/test2.zip?dl=0
配列増やしたもんをどうぞ
ですがー
VirusTotal - File - 009cb9e0695e817d634e66fcbb07b65e31e5289087f414d8642c73cf33b3d3c1
見たことも聞いたこともない
セキュが狼煙上げてますので毎度、気になる人は使わない、お約束ね。
フォームドラッグすると余計なもんありますが機能はしてません。
OCRの下りをコピペパズルしてると
・スクショ取ってファイルにする
・ファイルを読み込む
・bitmapをAPI用のbitmapに変換してOSRに渡す
・OCR本体でファイル読み込んで変換
で非同期処理だか同期処理だかでdebugモードで始めると
本体にデータ渡す前にデータ用意できてなくてnull報告 おいw
releaseでは何事もなかったかのように動くので別にいいんだろうけど
panelを透過させてその矩形範囲だけのbmpデータなんで
ファイルにする必要性ゼロということでパズル崩壊中(笑)
・矩形範囲をコピる
・そのままOCR用データに変換
・本体にブン投げる
たったこれだけのことなんだけど、はぁ
で、APIコールすることでvirustotalで誤検出が出てきてるので
こっちの公開はナシの「予定」
ファイルへの読み書き(txtじゃない)がなくなるとわかんないんで。
大は小を兼ねるってこういう、いやいやいやいやw
元の小さなフォームはそのままダブクリでファームでかくして
普段は隠しとけばえーわな、フォーム追加するのもめんどいし
さてこの文字列から数字を拾うわけだが、って
マジで巡航船乗るしかプレイができましぇん(笑)
とはいえ、言語を玩具代わりに遊ぶのは楽しいなぁ、というか
「終わり」があるんだよね、ゴール地点が
終わりのないネトゲはどっかで飽きるんだよ、それが普通。
アーキは3年くらいかな、MOEに至っては8年やってたしアホだ
さて、私信
彼の人インしてきたんで前回騒々しかったのは謝罪して別に
どうも思てへん、と軽く流されましたが
言っとく、俺は変わらない。
やんわりと言ってはくれたが「別れの言葉」に他ならん。
されるもんがあるならそれでいいのよ
4分以上の誤差とか初めて見たわ
APIコールで使えるそうな(気絶
Python
クリックで展開
VBだと無いというか探せなかったというかもっと回り道すりゃあるのかも
if (now > sts[ii] - wts - s2t && now < sts[ii] - wts)の計算ができない
C#
クリックで展開
そういう感じだけど
動いてないから金が増えてない、当たり前だけど(笑) <水曜やれ水曜に
C#のは配列に各時刻入れるとこまではできたので後は単にdatetime型で比較できればほぼ完成かな、何せグーグルスプレッドシートから始めてるんで
2022/10/25 22:35:36 - "00:10:47" が簡単にできねぇってのがねw
各言語やってからスプシやれば、ほぅ、ここまで簡素化してるのかと感心したところだけど。
どっちゃにしてもvirustotalでひとつでも判定出たらやめるけどね
とはいえ、
winセキュリティ、カスペルスキー、スマンテック、トレンドマイクロをクリアなら
別に気にすることもねーかとは思うけど、あとアバストか
dllとか入れてない素の作りかけexeでも
Cynet
Malicious (score: 100)
MaxSecure
Trojan.Malware.300983.susgen
SecureAge
Malicious
だそうで、おそらくデータファイルからのreadを見てこうなるんだろなと
ま、聞いたこともない銘柄だけどvirustotalで検査すると「出る」わけで(笑)
releaseでコンパイルしたフォルダにdata.txtいれてzipで渡すとmaxsecureだけになるけど
ちなみにサクラエディタのver2.4
Antiy-AVL
Trojan/Generic.ASMalwS.3D8F
Gridinsoft (no cloud)
Trojan.Win32.Agent.vb
Jiangmin
Trojan.Generic.hiwbi
VBA32
BScope.Trojan.Agent
Zillya
Trojan.Generic.Win32.1652512
俺どころの騒ぎじゃねーぞ、どーすんだこれw
プラグイン周りで誤検出、だといいけど。
まぁmaxsecureだけなら出すとしますか
おーそらくインストーラを使う形にすりゃ何も出ないとは思うけど
よほど気にってるブランドとか高額でそれを入れてることがステータスな
アプリケーションなら兎も角無料の馬の骨ソフトでインストーラとか
冗談だろ?っていう。
ちなみに寄付も募ってる超メジャーなwinaero
MaxSecure
Trojan.Malware.300983.susgen
Rising
Malware.Generic!8.BA4C (C64:YzY0Oj1kqbExwfge)
VBA32
CIL.HeapOverride.Heur
わーお
家2軒じゃしまらねーけどまぁ、いいかな
googleの審査はそのまま落ちるんじゃね?というか
問題なければ連絡なしでフラグ外れてあればそのまま放置or削除
virustotal入れたらgoogleはdetectになってたし
(笑)、そもそもぐぐるとさーpythonでウィルス作りましょうなんつぅ
記事いくつか堂々とかかるしな、いやはや
c#楽そうなのでフォームとラベルだけのexeをvirustotalで見たら
ぶっちゃけアテになんないのでやめて
配列にしまいこんだ日時をズラーっとtxtかcsvに吐き出して添付するようにして
それ見るとかでいいんじゃなかろか
データファイルへの読み書きはするんで、しないと動かん(笑)
驚いたねー、VSでpythonも「統合環境」として取り込んでやんの
確か仮想マシンもどっかの取り込んで放置だよな
とはいえ元々Windowsヽ(^o^)丿な人なんで別にいっか
てーわけであくまでMSCommunityが取り込んだpyinstallerで
コンパイルさせたexeに差し替え。
なんだかんだpythonとMSC2022気に入ったし
こういう最近のトレンドちゃんと見てれば最初から誤検知で騒ぐことも
なかったけどsmartscreenはWindowsの仕様なのでエスケープできません。
それとタイトルバーに現時表示はちとダサいし見にくいけど
このカタチが欲しかったそのものだから、もうやらない(笑)
ただ、本人もやりにくいのでcsvをtxtにして行単位で読むようには
20220222 142202
202202
1020
100
100
しとかないとなぁ、と。
VBでやるのはさすがに中止wほぼできたけどタイマー1個とforひとつ回してるだけの作りなのにCPU使用率1-2%とか笑えないレベル
さすがにpythonはc言語相当にコンパイルするから比べ物にならんし
誤検知にかからないブートローダを用意できたのでそっちもクリアした?し?
何より玩具としていじっててpythonのが楽しいw
pyinstallerがバカでかいからとnuiktaにしたけどpyinstallerでもMSVCをちゃんと
使えるようにすればnuitkaの出力と変わらんサイズ
nuitkaのログでx86だのCLだのが出て結局GCC使うけどこれはコンパイルを
vs2019のx64 Native Tools Command Promptでやればいいだけの話
visualstudioは手軽になったように見えるけど結局メインウェアが馬鹿でかくて
とっとと消したいレベル、って消すけど。
GCC、懐かしいなぁ boland c++ data.grf client.xml(笑)
結局キャストやポインタてのをわからずじまいでやめたけど
悪用する輩が一番悪いがそれを取り締まる側と
ChromeでDLはこう表示される
解釈としては、開発言語なので開発途中でPCを暴走させたり勘違いで
余計な事して自分でPCが使えなくなると、そういう意味で捉えれば
損害を与える可能性はあるとも言える、強引だがw
じゃなんでEdgeでは素通りさせるのか、MSはVS関係のDL数を計測してるわけだよ
で、Googleはそんなこと知ったこっちゃないしMSに天下取られるのも糞なので
故意的にこうしてる可能性もあるわけだ。Edge自体もう中身は単なるChromeなので
Googleが提供している開発言語使えやと。
セキュリティソフトも色々あるが皆同じ物差しで、ある程度共通基準はあるが
やってるわけじゃない、DL数あろうがなかろうが単発の無料言語など
ゴミでしかないわけ、MS自体無料言語を配布してる、がこれ上の画像の
VisualStudioCommunityってのが非商用なら無料でChromeは
害のあるファイルだっつってるわけ、面白いでしょ?
座標を偽装して荷物背負ったまま交易所でキャラ表示させずに納品
配布してるのはいるんだよ、現実に。
それで作ってるわけでもなく普通に公開されている素の開発ソフトだ
他じゃ俺じゃ無理だったが
2022/11/02 14:15:15 | |
20:02:03 | |
10:17:18 | |
00:10:19 | |
10:47:37 |