Kan någon vara snäll och se om de får detta exemplet att funka. Snälla är det ingen som orkar. Är nog int så svårt bara det att jag är newbe. Hej. Nja jag fick det inte att funka när jag gjorde det. Massa konstiga fel dök upp. Du har möjligtvis inte lust att göra ett försök? Så här gjorde jag :Kan någon ta en snabb titt på detta.
http://www.c-sharpcorner.com/Code/2002/Nov/win32api.asp
Om ni får det kan ni väll posta det på filarean som en C# WinApp.
Tackar på förhand.
//HLSv: Kan någon ta en snabb titt på detta.
Sv: Kan någon ta en snabb titt på detta.
Det är bara för dig att klistra in koden i en ny fil :-) Det verkar som hans kod kommer från en enda fil. Så bör du få det att fungera.
//Johan NSv: Kan någon ta en snabb titt på detta.
MVH Henrik LSv: Kan någon ta en snabb titt på detta.
Följande kod i en classfil
<code>
using System;
using System.Text;
using System.Runtime.InteropServices;
namespace Win32Application
{
/// <author>Shrijeet Nair</author>
public class Win32
{
[DllImport("User32.dll")]
public static extern Int32 FindWindow(String lpClassName,String lpWindowName);
[DllImport("User32.dll")]
public static extern Int32 SetForegroundWindow(int hWnd);
[DllImport("User32.dll")]
public static extern Boolean EnumChildWindows(int hWndParent,Delegate lpEnumFunc,int lParam);
[DllImport("User32.dll")]
public static extern Int32 GetWindowText(int hWnd,StringBuilder s,int nMaxCount);
[DllImport("User32.dll")]
public static extern Int32 GetWindowTextLength(int hwnd);
[DllImport("user32.dll", EntryPoint="GetDesktopWindow")]
public static extern int GetDesktopWindow();
}
}
</code>
Samt föjande i ett formulär :
<code>
public delegate int Callback(int hWnd,int lParam);
private void button1_Click(object sender, System.EventArgs e)
{
int hWnd;
Callback myCallBack = new Callback(EnumChildGetValue);
hWnd = Win32.FindWindow(null,"CallingWindow");
if(hWnd == 0)
{
MessageBox.Show("Please Start Calling Window Application");
}
else
{
Win32.EnumChildWindows(hWnd,myCallBack,0);
}
}
Public int EnumChildGetValue(int hWnd,int lParam)
{
StringBuilder formDetails = new StringBuilder(256);
int txtValue;
string editText="";
txtValue =Win32.GetWindowText(hWnd,formDetails,256);
editText = formDetails.ToString().Trim();
MessageBox.Show("Contains text of contro:"+ editText);
return 1;
}
</code>
Slutligen måste sätta formulärets textproperty till "CallingWindow". En knapp och några textboxar behövs också för demonstrationen. Jag behövde även lägga några using-statements i formuläret :
<code>
using System.Text;
using Win32Application;
</code>
Säg till om du inte får det att funka så lägger jag upp hela koden. Ville inte göra det nu eftersom jag la in det i ett testprojekt med massor med onödig kod.