Deutsch
Wünsche und Anregungen

Erledigt: Wunsch: IsClipFormat

 

Falk
Fallenstein
Die Funktion
handle& = @Create("hPic",0,"&CLPBMP") ist sehr hilfreich, um Bilder aus anderen Programmen zu übernehmen. Wenn sich jedoch in der aktuellen Zwischenablage keine Bitmap, sondern irgend etwas anderes befindet, merke ich das erst, wenn ich mit diesem "angeblichen Bild" weiter arbeiten will, z.B. mit SavePic Album$,handle&,... oder DrawPic handle&,... usw. Die Create-Funktion scheint selber keine abfragbare Fehlerbedingung zu erzeugen, deshalb kann ich das Problem erst durch die Folgefehler eingrenzen bzw. abfangen. Für eine schlanke, übersichtliche Programmierung wäre es schön, wenn man den Erfolg der oben genannten Funktion unmittelbar nach deren Aufruf überprüfen könnte - z.B. mit einer speziellen Systemvariablen.
 
Strategien im Vergleich:
Microsoft: der Computer macht mit Dir, was er will ...
XProfan: der Computer macht, was Du von ihm willst.

XProfan 11, Windows XP (1.5 GByte RAM), XProfEd
18.11.2009  
 



%bmpx ?
 
18.11.2009  
 




Falk
Fallenstein
habe ich schon probiert. Die Bilder hätten demnach galaktische Größen - mit 0 x 0 pixels hätte es mir als Kriterium gereicht
 
Strategien im Vergleich:
Microsoft: der Computer macht mit Dir, was er will ...
XProfan: der Computer macht, was Du von ihm willst.

XProfan 11, Windows XP (1.5 GByte RAM), XProfEd
18.11.2009  
 




Christian
Schneider
Vielleicht klappts ja per API:

GetClipboardData-Funktion (MSDN):  [...] 
Clipboard-Formate (MSDN):  [...] 
Beispiel in VB:  [...] 
 
XProfan 11| Vista(64) SP2
18.11.2009  
 




Falk
Fallenstein
Mit "0 x 0 pixels" meinte ich natürlich erfolgloser, d.h. fehlerbehafteter Funktionsaufruf. Auch die Überprüfung der zurückgelieferten Handle-Nummer hilft nicht weiter, das sind irgendwelche x-beliebigen Zahlen, die auf keine wirklich definierten Objekte im Arbeitsspeicher zeigen - deshalb führen sie ja zu den erwähnten Folgefehlern.
 
Strategien im Vergleich:
Microsoft: der Computer macht mit Dir, was er will ...
XProfan: der Computer macht, was Du von ihm willst.

XProfan 11, Windows XP (1.5 GByte RAM), XProfEd
19.11.2009  
 




Falk
Fallenstein
Danke, Christian, für Deine Anregungen. Ich habe mir die Verweise kurz angesehen und fühle, dass es es damit sicher geht (und man noch viel mehr mit der Zwischenablage machen kann). Aber in den Details geht es bei meinen bescheidenen Programmierkentnissen weit über meinen Horizont hinaus
 
Strategien im Vergleich:
Microsoft: der Computer macht mit Dir, was er will ...
XProfan: der Computer macht, was Du von ihm willst.

XProfan 11, Windows XP (1.5 GByte RAM), XProfEd
19.11.2009  
 




Christian
Schneider
Hab mal was zusammengebastelt:
KompilierenMarkierenSeparieren
Def OpenClipboard(1) !"USER32","OpenClipboard"
Def CloseClipBoard(0) !"USER32","CloseClipboard"
Def GetClipboardData(1) !"user32.dll","GetClipboardData"

Proc ClipIsPic

    Declare Cboard_return&

    IF OpenClipBoard(GetActiveWindow()) <> 0 erfolgreich geöffnet?

        Cboard_return&=GetClipboardData(2) Parameter 2 = Bild erwartet | 1 wäre Text
        CloseClipBoard()

    EndIF

    If Cboard_return& <> 0 Wert ungleich 0 = Wahr

        Return 1

    Else

        Return 0

    EndIF

EndProc

CLS
Print ClipIsPic() 1 = Bild, 0 = Kein Bild
Waitinput

Wenn die Zwischenablage ein Bild enthält gibt ClipIsPic 1, wenn nicht 0 zurück.
 
XProfan 11| Vista(64) SP2
19.11.2009  
 




Christian
Schneider
Frabbing, Beitrag=55027, Zeitpunkt=19.11.2009
Einfacher ist:
KompilierenMarkierenSeparieren
Def IsClipFormat(1) !"USER32","IsClipboardFormatAvailable"
Print IsClipFormat(1) Text
Print IsClipFormat(2) Bild


aus:  [...] 
 
XProfan 11| Vista(64) SP2
19.11.2009  
 




Falk
Fallenstein
Fantastisch, Christian!
Genau das, was ich brauche und sooooo einfach - halt gewusst wie ;)
KompilierenMarkierenSeparieren
Gemerkt/Separiert von http://xprofan.com/thread.core?t=7937
Def IsClipFormat(1) !"USER32","IsClipboardFormatAvailable"
declare h0&
cls

if IsClipFormat(2)Bild

    h0&=create("hPic",0,"&CLPBMP")
    hier weitermachen, z.B.
    drawpic h0&,0,0;0

else

    hier auf den Fehler hinweisen, z.B.
    print "no image in the clipboard - please try again ..."

endif

waitinput

Ich möchte auch erklären, wofür ich diesen Clipboard-Check verwenden möchte:
Ich habe ein phpBB-Forum, bei dem es vor allem auf Bilder ankommt, die aktuell im Internet zu finden sind. Ich selber (als Adimnistrator/Moderator) lade solche Bilder auf den eigenen Webspace hoch, um sie wenigstens so dauerhaft zu machen, wie das Forum existiert. Für meine aktiven Mitglieder habe ich versuchsweise einen FTP-Zugang eingerichtet, auf den sie die von ihnen geposteten Bilder hochladen könnten, doch sie sind mit dem Umgang eines FTP-Programms einfach überfordert und posten deshalb immer wieder nur die Linkadressen zu den Bildern auf den Original-Sites. Erfahrungsgemäß werden solche Links oft früher oder später ungültig und die Bilder gehen unserem Forum verloren. Außerdem gehen viele Websites dazu über, die Übernahme direkter Links zu Teilen ihrer Seiten, also auch Bildern, duch die einfache Copy/Paste-Methode zu verhindern, was meine Freunde auch beim "Preview" ihrer neuen Beiträge gar nicht merken, weil sich die Bilder schon im Cache ihres eigenen Webbrowsers befinden,

Ich habe lange überlegt, wie ich eine "narrensichere" Möglichkeit zum Upload von Bildern für das Forum realisieren könnte und glaube, dass der Weg über die Zwischenablage doch der einfachste ist: right click -> save image to ...  können sie alle und copy image to clipboard  sicherlich auch. Dann kann ein kleines, parallel geöffnetes Programm das Bild aus der Zwischenablage abholen, ohne weiteres Zutun per FTP aufs Forum hochladen (natürlich nur für autorisierte User) und den Bilderlink als komplett formatierten HTML-Schnipsel in der Zwischenablage zum Einfügen in den Beitrag zurückliefern.
 
Strategien im Vergleich:
Microsoft: der Computer macht mit Dir, was er will ...
XProfan: der Computer macht, was Du von ihm willst.

XProfan 11, Windows XP (1.5 GByte RAM), XProfEd
20.11.2009  
 



Das hättest imho für die Leute noch einfacher machen können - serverseitig. ^^

Fügt ein Mitglied eine http-URL mit einer Bildadresse ins Posting-Eingabefeld ein ("Bildadresse kopieren" wird vom Browser ebenso angeboten), dann einfach das Bild per (php) file_get_contents laden und auf Server ablegen und die Bildadresse in entsprechendes <img wandeln.

Aber egal wie, hat alles sein Gutes.
 
20.11.2009  
 




RGH
Falk Fallenstein, Beitrag=55018, Zeitpunkt=18.11.2009
Die Funktion
handle& = @Create("hPic",0,"&CLPBMP") ist sehr hilfreich, um Bilder aus anderen Programmen zu übernehmen. ... Die Create-Funktion scheint selber keine abfragbare Fehlerbedingung zu erzeugen


Hallo,

das Ergebnis der Funktion (im Erfolgsfall das Handle der Bitmap) sollte in diesem Fall 0 sein und damit andeuten, dass die Bitmap nicht erzeugt werden konnte. Außerdem sollte eine Warnung aufpoppen, dass die Bitmap nicht ladbar ist.

Gruß
Roland

Nachtrag: Arrghh ... ich hatte tatsächlich vergessen, den Rückgabewert zu initialisieren. In der nächtsten Version funktioniert es wie geplant.
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
20.11.2009  
 




Falk
Fallenstein
iF
... einfach das Bild per (php) file_get_contents laden und auf Server ablegen und die Bildadresse ... wandeln ...

ja, klingt einfach, ist es für mich aber nicht, denn ich kenne mich mit PHP leider nicht aus *schäm*

Außerdem weiß ich nicht, ob der Server, von dem das Original-Bild kommt, mit einem solchen Zugriff das Bild auch wirklich hergibt (Sperre externer Bilderlinks, siehe meine Bemerkung weiter oben). Mit der von mir angestrebten Lösung wäre schon mal sichergestellt, dass das Bild lokal auf dem Rechner des Mitglieds vorhanden ist und von dort zu meinem Server übetragen werden kann. Als Admin weise ich auch immer wieder darauf hin, eine kurze Quellenangabe für extern geladene Bilder möglichst nicht zu vergessen.

Roland
das Ergebnis der Funktion (im Erfolgsfall das Handle der Bitmap) sollte in diesem Fall 0 sein ...

so habe ich es mir auch vorgestellt und zu allererst ausprobiert - bei anderen create("hPic" ...) Funktionen funktioniert es ja.
 
Strategien im Vergleich:
Microsoft: der Computer macht mit Dir, was er will ...
XProfan: der Computer macht, was Du von ihm willst.

XProfan 11, Windows XP (1.5 GByte RAM), XProfEd
20.11.2009  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.801 Betrachtungen

Unbenanntvor 0 min.
Falk Fallenstein08.04.2019
p.specht25.02.2018
Uwe Lang16.09.2013
Jörg Sellmeyer04.11.2011

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie