PDA

View Full Version : سوال: كمك در مورد استفاده از توابع API در سي شارپ



hooloo24
چهارشنبه 15 آذر 1391, 16:20 عصر
سلام دوستان.خسته نباشيد . راستش من اصلا با برنامه سي شارپ آشنايي ندارم . و از بخت بد من استادمون هم چند تا تابع api داده كه بايد توسط سي شارپ بنويسيم. من كلاً سر در نميارم . ميشه در اين زمينه كمكم كنيد ؟ نمره قبولي در اين درسم به اين چند تا تابع بستگي داره . پيشاپيش خيلي خيلي ممنونم . اگر هم دوستان مبلغي واسه انجام اين كار مدنظرشون هست بهم اطلاع بدند . فقط خيلي فوري نياز دارم.
orbital_20@yahoo.com

اين سه تابع api كه استاد داده :

GetProcessTime
ExtractIcon
GetUsersProfileDirectory

hooloo24
چهارشنبه 15 آذر 1391, 19:53 عصر
كسي نيست بهم كمك كنه ؟ خيلي كارم گيره .

pooya1072
چهارشنبه 15 آذر 1391, 20:01 عصر
سلام دوست عزیز
اگه یه سر به help ویژوال استودیو) MSDN)بزنی جواب تمام سوالاتت رو که می گیری هیچ به بقیه هم می تونی کمک کنی.سعیت رو بکن.امیدوارم موفق باشی

keyvan_s89
چهارشنبه 15 آذر 1391, 20:13 عصر
سلام دوستان.خسته نباشيد . راستش من اصلا با برنامه سي شارپ آشنايي ندارم . و از بخت بد من استادمون هم چند تا تابع api داده كه بايد توسط سي شارپ بنويسيم. من كلاً سر در نميارم . ميشه در اين زمينه كمكم كنيد ؟ نمره قبولي در اين درسم به اين چند تا تابع بستگي داره . پيشاپيش خيلي خيلي ممنونم . اگر هم دوستان مبلغي واسه انجام اين كار مدنظرشون هست بهم اطلاع بدند . فقط خيلي فوري نياز دارم.
orbital_20@yahoo.com

اين سه تابع api كه استاد داده :

GetProcessTime
ExtractIcon
GetUsersProfileDirectory

باید قسمت اصلی رو در کلاس بنویسی و در دکمه یا جایه دیگه صداش بزنی (میتونی از ApiViewer هم استفاده کنی)
در ضمن اول باید یوزینگ رو بنویسی
using System.Runtime.InteropServices

hooloo24
چهارشنبه 15 آذر 1391, 20:21 عصر
باید قسمت اصلی رو در کلاس بنویسی و در دکمه یا جایه دیگه صداش بزنی (میتونی از ApiViewer هم استفاده کنی)
در ضمن اول باید یوزینگ رو بنویسی
using System.Runtime.InteropServices




گفته شما متين ولي من اصلا از سي شارپ سر در نميارم و تجربه اي در اين زمينه ندارم.اين هم توفيق اجباري بوده از طرف استاد محترم بنده

keyvan_s89
چهارشنبه 15 آذر 1391, 20:50 عصر
گفته شما متين ولي من اصلا از سي شارپ سر در نميارم و تجربه اي در اين زمينه ندارم.اين هم توفيق اجباري بوده از طرف استاد محترم بنده
اول کد این خط رو بنویسید:
using System.Runtime.InteropServices

بعد در قسمت public partial class این کد را بنویسید:(مثلا این تابع دایرکتوری ایجاد میکنه)
[DllImport ("kernel32.dll")]
static extern int CreateDirectoryA (string p,int s);
خط اول کرنل 32 را وارد میکنه تا api بتونه ازش استفاده کنه (البته بستگی به تابع داره نوع dll هر تابع فرق میکنه )
و بعد مثلا در یک دکمه نام تابع رو صدا میزنید در این مثال (CreateDirectoryA)

hooloo24
چهارشنبه 15 آذر 1391, 21:57 عصر
با كلي مكافات اينو از msdn گير آوردم ولي ارور ميده . ميشه واسم اصلاحش كنيد


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[DllImport("Kernel32",
EntryPoint = "GetProcessTimes",
ExactSpelling = true,
CharSet = CharSet.Ansi,
SetLastError = true)]
public static extern bool GetProcessTimes(IntPtr hProcess,
ref long lpCreationTime,
ref long lpExitTime,
ref long lpKernelTime,
ref long lpUserTime);

private void button1_Click(object sender, EventArgs e)
{
long lpCreationTime = 0;
long lpExitTime = 0;
long lpKernelTime = 0;
long lpUserTime = 0;
foreach (Process P in Process.GetProcesses())
{
try
{
bool RetVal = GetProcessTimes(P.Handle, ref lpCreationTime, ref lpExitTime, ref lpKernelTime, ref lpUserTime);
Console.Write(P.Handle.ToString() + " ");
Console.Write(lpCreationTime.ToString() + " ");
Console.Write(lpKernelTime.ToString() + " ");
Console.WriteLine(lpUserTime);
Console.Write(P.Handle.ToString() + " ");
Console.Write((P.StartTime.Ticks - DateTime.Parse("1/1/1601").Ticks).ToString() + " ");
Console.Write(P.PrivilegedProcessorTime.Ticks.ToSt ring() + " ");
Console.WriteLine(P.UserProcessorTime.Ticks.ToStri ng() + " ");
}
catch
{
}
}
}

private void Form1_Load(object sender, System.EventArgs e)
{

}
}
}

hooloo24
پنج شنبه 16 آذر 1391, 08:33 صبح
من همچنان در انتظار کمک دوستان هستم. لطفا اگه کسی میتونه کمک کنه کد آمادشو برام بذاره آخه چون من سر در نمیارم واسه همین توضیحات دوستان کمکی بهم نمیکنه.