Что я пытаюсь сделать, так это сделать dll, который при запуске будет иметь всплывающее окно без границ. Форма будет самой высокой во все времена, и она будет непрозрачной. Я также смогу щелкнуть по форме. На данный момент все это работает, проблема, с которой я столкнулась, заключается в настройке расположения форм. Когда я пытаюсь установить расположение форм, он просто не перемещается.Как установить расположение формы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace pic
{
public class Class1
{
[DllImport("user32.dll", SetLastError = true)]
private static extern UInt32 GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, IntPtr dwNewLong);
[DllImport("user32.dll")]
static extern bool SetLayeredWindowAttributes(IntPtr hwnd, uint crKey, byte bAlpha, uint dwFlags);
public const int GWL_EXSTYLE = -20;
public const int WS_EX_LAYERED = 0x80000;
public const int WS_EX_TRANSPARENT = 0x20;
public const int LWA_ALPHA = 0x2;
public const int LWA_COLORKEY = 0x1;
public void t()
{
Console.Beep(100,100);
Form f = new Form();
f.BackColor = Color.White;
f.FormBorderStyle = FormBorderStyle.None;
f.Bounds = Screen.PrimaryScreen.Bounds;
f.TopMost = true;
Bitmap bitmap = new Bitmap("c:\\users\\mike\\documents\\visual studio 2013\\Projects\\pic\\pic\\Grapes.png");
f.Size = new Size(bitmap.Size.Width, bitmap.Size.Height);
f.Location = new Point(500, 500);
Application.EnableVisualStyles();
Console.Beep(500,200);
SetWindowLong(f.Handle, GWL_EXSTYLE,
(IntPtr)(GetWindowLong(f.Handle, GWL_EXSTYLE)^WS_EX_LAYERED^WS_EX_TRANSPARENT));
// set transparency to 50% (128)
SetLayeredWindowAttributes(f.Handle, 0, 128, LWA_ALPHA);
f.BackgroundImage = Bitmap.FromFile("c:\\users\\mike\\documents\\visual studio 2013\\Projects\\pic\\pic\\Grapes.png");
Application.Run(f);
}
}
}
, когда вы говорите, что «это немного изменилось» - что это немного подвигло в ссылке? С последнего прогона? Может ли это быть аутопозицией, что окна делают это «немного движется»? например, если вы нажмете win + e несколько раз, исследователи будут уложены со смещением, а не друг на друга. Это то, что перемещает ваше окно? – Default
@Default, вы правы, он действительно не двигался. Он просто меняет положение на каждом прогоне. – hurnhu
О, это было мое следующее предложение. Так что, играя с значениями «StartPosition», ничего не получается? Установка его на «Ручной» кажется, что он должен решить проблему. – Default