PDA

View Full Version : سوال: سوال درمورد تابع setcomputername



paria92
پنج شنبه 04 دی 1393, 00:13 صبح
سلام دوستان من این تکه کد رو نوشتم برای اینکه نام کامپیوترم رو عوض کنم .ولی خطا میده کی میتونه کمک کنه؟


procedure TForm1.btn1Click(Sender: TObject);
var
p:array[0.. 255] of char;
begin
p:='paria'
SetComputerName(p);
end;
end.

mojtabamalaekeh
پنج شنبه 04 دی 1393, 00:59 صبح
سلام دوستان من این تکه کد رو نوشتم برای اینکه نام کامپیوترم رو عوض کنم .ولی خطا میده کی میتونه کمک کنه؟


procedure TForm1.btn1Click(Sender: TObject);
var
p:array[0.. 255] of char;
begin
p:='paria'
SetComputerName(p);
end;
end.



سلام
متن خطا :لبخند:
هیچوقت نگید خطا میده. بگید متن پیغام خطاش چیه که دوستان بتونن کمکتون کنن.
الان این تردید وجود داره که سمی کالن خط p:='paria' رو نذاشتین که خطا میده یا این سمی کالن فقط توی کد کپی شده در سایت جا افتاده و خطا رو سیستم خودتون از جای دیگس!

paria92
پنج شنبه 04 دی 1393, 01:18 صبح
ذوست عزیز سمی کالن پریا رو هم گذاشتم اینبار هیچ خطایی نمیده ولی نام کامپیوتر رو هم عوض نمیکنه.ایا ممکنه به خاطر این باشه که حتما باید در یوزر ادمین این کد نوشته بشه تا نام کامپیوتر عوض بشه؟

arash_ebrahimi_nk
پنج شنبه 04 دی 1393, 07:20 صبح
برای بعضی توابع API مثل همین SetComputerName تا اونجایی که یادم میاد باید متغیر متنی رو بر روی حافظه کپی بگیری.
فک کنم برای استفاده از SetComputerName دو تا راه داره اول اینکه یه متغیر از نوع PChar یا Pointer معرفی کنی و با استفاده از GetMem حافظه اولیه بهش اختصاص بدی. دومین راه اینه که اگه از نسخه های جدید دلفی استفاده میکنی از متغیر string استفاده کنی و کُد UniqueString را برای متغیرت به کار ببری.
بهترین راه اینه که نام تابع رو به همراه کلمه Delphi داخل گوگل جستجو کنی یه مثال کوچیک برات میآد.
SetComputerName "Delphi"

mojtabamalaekeh
پنج شنبه 04 دی 1393, 16:54 عصر
ذوست عزیز سمی کالن پریا رو هم گذاشتم اینبار هیچ خطایی نمیده ولی نام کامپیوتر رو هم عوض نمیکنه.ایا ممکنه به خاطر این باشه که حتما باید در یوزر ادمین این کد نوشته بشه تا نام کامپیوتر عوض بشه؟

Sets a new NetBIOS name for the local computer. The name is stored in the registry and the name change takes effect the next time the user restarts the computer.

این تابع اسم کامپیوتر توی شبکه رو عوض میکنه نه اون اسمی که توی Properties دیده میشه. اونم بعد از Restart...

126877

توی عکس می بینید که NetLimiter نشون میده Test-ABC این مقداریه که بعد از Restart اعمال شده و توی شبکه هم فقط با همین اسم میتونم وارد سیستم بشم.
توی تنظیمات ویندوز می بینید نوشته Test-ABCFD این مقداریه که جدید عوض کردم و هنوز Restart نکردم و توی شبکه هم نمیتونم با این اسم وارد سیستم بشم.
اگه هدف شما تغییر Full computer name بوده یه تلاشی توی گوگل بکنید چون منم بلد نیستم و بخوام راهنمایی کنم باید گوگل رو بگردم.