الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حاجه غريبه في دالة ال API !

مغلق
بدأه hazzoom في 2 سبتمبر 2005 · 14 رد · 938 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندما قمت بالاعلان عن الداله SystemParametersInfo التي تستخدم في تغيير الـ Wallpaper (خلفية النظام ) كان الخطأ التالي (في الصوره) ما السبب ؟؟؟

الداله :

Private Declare Function SystemParametersInfo Lib "user32.dll" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef lpvParam As Any, ByVal fuWinIni As Long) As Long

ثوابت الداله حتي تجربوها ,,,

public const spi_setdeskwallpaper=20
public const spif_sendwininichange=&h2
public const spif_updateinifile=&h1

01_09_05_04_56_22_1125618982err.JPG

تم تعديل هذه المشاركة بواسطة hazzoom في 2 سبتمبر 2005 في 02:56

#2

السلام عليكم

ربما any والله أعلم أنه من اي نوع object أو variant لكن في .NET كما شاهدة في كثير من الـ APIs أنه يستبدل بـ String

كذلك وهذا مهم جداً أن تقوم بتحويل كل المتغيرات من نوع long إلى النوع Integer

لانه long في الإصدارت السابقة يعني 32bits بينما في NET. يعني 64bits

والشكل النهائي للنصوص البرمجية سيكون بهذا الشكل .

 Private Declare Function SystemParametersInfo Lib _
    "user32" Alias "SystemParametersInfoA" (ByVal uAction As Integer, _
    ByVal uParam As Integer, ByVal lpvParam As String, _
    ByVal fuWinIni As Integer) As Integer
    Private Const SPI_SETDESKWALLPAPER As Integer = 20
    Private Const SPIF_UPDATEINIFILE As Integer = 1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim OFD As New OpenFileDialog
        With OFD
            .Filter = "Bitmaps(*.bmp)|*.bmp"
            .RestoreDirectory = True
            .Title = "إختر صورة لوضعها كواجهة"
            If .ShowDialog = DialogResult.OK Then
                SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, .FileName, SPIF_UPDATEINIFILE)
            End If
        End With
    End Sub

الكود منقول من بعض الساحات الاجنبية (مع بعض التعديل علي بصبغة عربية)

بالتوفيق أخي حازم و الاخوة الكرام

السلام عليكم

في المثال يتضح المقال

#3

الكود لم يعمل يا غملاسي ولكن كل ما يحدث هو اختفاء الخلفيه الموجوده فقط ولا يضع الخلفيه الجديده !!!

ليه مش عارف ؟؟؟ هل جربته يا غملاسي ؟؟؟ أرجو ان أي حد يجربه ويرد عليا ويقولي هل نفع ولا لأ ؟؟؟

#4

السلام عليكم

اشتغل معي وهو فقط مقتصر على الصور من نوع bmp

بالتوفيق إن شاء الله .

API_desktop wallpaper.zip

في المثال يتضح المقال

#5
اقتباس
وهو فقط مقتصر على الصور من نوع bmp

ليه ما قولتش كده من الأول :lol: أصل أنا غيرت نوع الصور الي Jpg ,كده تمام ,

جزاك الله خيرا يا غملاسي ,,,

#6

طبعا بما أن صورة سطح المكتب لا تقبل سوى ال bmp فما عليك سوى بالتلاعب و عمل طريقة بسيطة لكي يستطيع برنامجك قبول جميع أنواع الصور

و الطريقة هي تغيير نوع الصورة المختارة الى bmp عن طريق الكود التالي

PictureBox.Image.Save(imagePath, ImageFormat.Bmp)

و بعد ذلك تمرر الصورة لى الدالة

#7

فكره حلوه جزاك الله خيرا ,,,

بس في مشكلة يا crazy-man ,,

Dim img As System.Drawing.Image
Dim imgfor As System.Drawing.Imaging.ImageFormat
img.Save(filar(1), imgfor.Bmp)

حيث (filar(1 هو مسار الصوره (أصل أنا عامل مصفوفه فيها أسماء الصور) فيظهر الخطأ التالي Object variable or With block variable not set

تم تعديل هذه المشاركة بواسطة hazzoom في 2 سبتمبر 2005 في 18:04

#8
Dim img As New System.Drawing.Image

ولا تحتاج Dim الأخرى،

ImageFormat.Bmp عبارة عن static

بالتوفيق!!

تم تعديل هذه المشاركة بواسطة أبومازن في 3 سبتمبر 2005 في 04:57

#10
Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp);

أو استدعي الفئة

Using System.Drawing.Imaging.ImageFormat;

وستعمل شفرتك بإذن الله!

بالتوفيق!!

#11

جزاك الله خيرا يأ أخ أبو مازن ولكن :

03_09_05_09_35_56_11258085561.JPG

ما السبب ؟ ياريت حد يعمل مثال ويرفقه ...,,,

#12

أين الصورة التي تريد حفظها، أنت لم تنشئ صورة!:

Image myImage = new Bitmap(fileSourceName);// الآن عندنا صورة جديدة
myImage.Save(fileDestinationName, ImageFormat.Bmp);// الآن نستخدم الحفظ الخاص بالصورة
// لاحظ أن هذه العملية ليست ثابتة!

NullpointerException تعني أنك تستخدم شيء غير موجود!!

#13

شكرا يا أبو مازن لكن عندك غلطه وهذا هو التصحيح ,,,

المفروض أن تمرر لدالة save اسم الصوره الجديده وليس القديمه ,,,

هكذا :

Dim x As New Bitmap("c:\pic06.jpg")
x.Save("c:\pic06.bmp", System.Drawing.Imaging.ImageFormat.Bmp)

وجزاك الله خيرا كثيرا علي متابعتك للمشكله ,,,

#14

لقد كتبت أنها ملف جديد، fileDestinationName...

:)

الملف القديم أو المصدر هو fileSourceName.

#15

الله ينور عليك ...,,,

أنا آسف جدا أخي أبو مازن أنا اللي غلطان وجزاك الله خيرا ,,,

هذا الموضوع مغلق.

مواضيع مشابهة