ChatGPTで、コードをつくってもらったけれど、なかなかうまくいかなかった。Windowsメッセージ等のOSに近い部分は、ChatGPTに助けてもらったけど、コードの論理に関してはまだ、自分のような凡人プログラマにも及ばない感じがした。
結局、自分でしばらく試行錯誤しながら、解決することになった。ChatGPTは、現実世界で試行錯誤は、できないわけなので、そこは、人間よりハンディがあるんだろうと思った。今日、NVIDIA株も急落した。AIに期待が大きすぎたか。。
private const int WM_VSCROLL = 0x0115;
private const int SB_LINEDOWN = 1;
private const int SB_LINEUP = 0;
[DllImport("user32.dll")]
private static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
public static void ScrollLines(System.Windows.Forms.TextBox textBox, int numberOfLines)
{
for (int i = 0; i < Math.Abs(numberOfLines); i++)
{
SendMessage(textBox.Handle, WM_VSCROLL, numberOfLines > 0 ? SB_LINEDOWN : SB_LINEUP, 0);
}
}
public static void MoveCursorToText(string searchText,System.Windows.Forms.TextBox textBox)
{
// テキストボックス内の最初の位置にカーソルを移動
textBox.SelectionStart = 0;
textBox.SelectionLength = 0;
textBox.ScrollToCaret(); // カーソルの位置にスクロール
int index = textBox.Text.IndexOf(searchText, StringComparison.OrdinalIgnoreCase);
if (index != -1)
{
textBox.Focus();
textBox.SelectionStart = index;
textBox.SelectionLength = searchText.Length;
textBox.ScrollToCaret();
int lineIndex = textBox.GetLineFromCharIndex(index);
int visibleLines = textBox.Height / textBox.Font.Height;
if (lineIndex > visibleLines)
{
ScrollLines(textBox, visibleLines-1);
}
else
{
ScrollLines(textBox, lineIndex);
}
}
else
{
MessageBox.Show("Text not found.");
}
}