Create Thread on Photoshop Plug-in

Dear All,
Right now, I am developing a demo Photoshop plug-in software to understand the way to implement Photoshop plug-in. However, I meet a issues that I can not create a Thread on Photoshop plug-in by CreateThread() API. I implement as below:
Main function:
CreateThread( NULL, 0, Test1Thread, NULL, 0, NULL);
Thread function:
DWORD WINAPI Test1Thread(LPVOID pParam)
/*Do something*/
return 0;
When I compile and load plug-in on Photoshop, it show an error message like this:
The instruction at "0x09fd100a" referenced memory at "0x09fd100a". The memory could not be "read"
Click on OK to terminate the program
Click on CANCEL to debug the program
Can you give me some suggestions that I can create a Thread by CreateThread() API on Photoshop plug-in or not? And how can I create Thread?
I am looking forward your answer.
Thanks for your help,
Hieu Nguyen.
PS: I am developing on Window OS and Visual C++ development tool.

Thanks Aandi Inston and Marcus Phillips for your answer.
In thread I just use Named Pipe inter-process communication mechanism to send signal to the other application. So I do not use any Photoshop API.
However, it is strange that I can not put my Thread in begin of PluginMain function:
DLLExport SPAPI SPErr PluginMain
( char* caller, char* selector, void* message)
SPErr error = kSPNoError;
SPMessageData *basicMessage = NULL;
SPPluginRef plugInRef = NULL;
SPErr err = 0;
basicMessage = (SPMessageData *) message;
sSPBasic = basicMessage->basic;
gPlugInRef = basicMessage->self;
MyThread();/*CAN NOT RUN THE THREAD!!!!*/
I must change my Thread function to position after checking caller parameter
Please show me the reason why?
Thanks,

Similar Messages

  • Using STL collections in Photoshop plug-ins

    Hello!<br /><br />Would you explain one moment. I need use a lot of STL collections in my Photoshop plug-in.<br /><br />First, I try to write something like<br />---------------------------------------------------------------------<br />#include <map><br />#include <string><br /><br />...<br /><br />  map<int,string> foo;  // BANG!<br />---------------------------------------------------------------------<br /><br />Next, I try to use Photoshop Basic Suite:<br /><br />---------------------------------------------------------------------<br />#include <algorithm><br /><br />namespace std {}<br />using namespace std;<br /><br />#include <PIFormat.h><br /><br />extern SPBasicSuite     *g_sSPBasic;<br /><br />inline void * operator new ( const size_t size )<br />{<br />     void *result = 0;<br /><br />     if( 0 != g_sSPBasic )<br />     {<br />          void     *temp;<br /><br />          if( g_sSPBasic->AllocateBlock( size, &result ) )<br />          {<br />               result = 0;<br />          }<br />          else<br />          {<br />#ifdef     DEBUG<br />               char     *tmp = static_cast<char*>( result );<br />               fill( tmp, tmp + size, 0xEB );<br />#endif<br />          }<br />     }<br /><br />     return     result;<br />}<br /><br />inline void operator delete ( void * ptr )<br />{<br />     if( 0 != g_sSPBasic )<br />     {<br />          g_sSPBasic->FreeBlock( ptr );<br />     }<br />}<br /><br />//  the same for operator new[] and operator delete[]<br />---------------------------------------------------------------------<br /><br />Now simple STL collections can be created.<br /><br />Is there more laconic way to create STL collections?<br /><br />Moreover. This code is very dirty. For example, I even don't sure that Simple Suite address is constant between calls of plug-in entry point. So I think this is an awful dangerous code (just imagine the effect of two copies of of Adobe Photoshop using plug-in using this operators simultaneously).<br /><br />Do you have some ideas how to make it clean and working?

    2 all
    On dynamic C++ memory management in Adobe Photoshop plug-in
    As there are some people interested in the question I'll try to explain a technique I use at present.
    I have two memory allocators:
    a) based on Adobe's Basic Suite for small blocks (under 2Kbytes)
    b) based on Adobe's Handle Suite for large blocks (above 2Kbytes)
    operator new and operator new[] allocate 4 additional bytes for every allocation, store in the first 4 bytes handle to memory allocator used for this new or new[] call, and return pointer after this handle.
    operator delete and operator delete[] takes memory allocator handle from the pre-pointer 4 bytes, and dellocate memory using correct memory allocator.
    This strategy works well.
    Does anybody know a better dynamic memory management technique to use with Adobe SDK for Adobe Photoshop plug-ins?

  • PHOTOSHOP PLUG-IN OR SOFTWARE

    I need help finding somebody that can develop a plug-in or software program that will work with Photoshop CS4
    Basically it relates to loading an image, doing the RGB separations and then with a pattern already created with Photoshop we manipulate the RGB separations but it is time consuming. We need to develop something where we just load the image and the program does the rest. The end result is only a black and white file.
    I am based in San Diego, California.
    Dan Lieberman
    President & CEO
    Phone: 619-840-3106
    Email: [email protected]

    Auto FX Software is also a leading developer of professional Photoshop Plug-In filters. Auto FX Software supports the Adobe Photoshop Plug-In standard for Photoshop CS, Photoshop CS2, Photoshop CS3, Photoshop CS4 and Photoshop CS5.
    Website Development Specialist 

  • Fireworks CS5 not finding Photoshop plug-ins

    I recently installed Alien Skin Eye Candy 6 and Exposure 3 64-bit plug-ins. They are in my Photoshop plugins folder.
    When I open the Fireworks preferences and select this as the Photoshop plug-ins folder, the plug-ins are not available in Fireworks. I just get the standard Fireworks list and "Photoshop Live Effects".
    I tried trashing the preferences to no avail, and tried on a new user account - and really just can't understand why it is failing entirely to find the 3rd party plugins. Its no big deal - I hardly ever use them... but would still like to have them in the tank should they be needed for any reason.
    Any help gratefully received.
    Cheers,
    Steve Jones
    PS: Running Fireworks CS5 (11.0.0.484) on a MacBook Pro i7 2.66Ghz with 8GB RAM, Mac OS X 10.6.6

    Yep, that would do it alright. I thought it was a 64 bit application.
    I have contacted Alien Skin to see what the story is with running both 64 bit and 32 bit versions of the plugins on the same machine. I'm assuming that, presuming I can get access to the 32 bit installers, installing them directly into Fireworks own plugins folder will work if the Photoshop Plug-Ins checkbox is unchecked.
    I will update this thread when I have a definitive response from Alien Skin.
    Cheers
    SJ

  • Creating stills in photoshop cs2 for 16:9 HDTV

    Hi,
    I've been reading posts regarding creating stills and still need some clarification. I'm from a print world, so dealing with square pixels vs. non square, hdv, vs dv widescreen is all a bit confusing....
    I've been to this link: http://www.fcpbook.com/Photoshop1.html and several others, plus reading the manuals which all have been helpful, but each instance deals with different specs, not necessarily what I've listed below.
    First, I am creating the stills for 16:9 viewing on a hidef tv (1080). The FCE HD project is an animated, narrated story with overlays, keyframe motion and some limited effects.
    Here are my questions:
    1. In creating my original photoshop template: should I use pshop's presets under "new document":
    HDV, 1920 x 1080 (with guides) and if yes, what should the aspect ratio be set at? Square or HDV anamorphic? (When I do "HDV anamorphic" I get a squashed look in FCE, with "square" it looks good.)
    2. Saving the photoshop file to be imported into FCE, would it be better to save as a jpg, or photoshop or other format? I've been reading differing opinions as to which...
    3. Once I create this template (above) can I crop down the still if it doesn't fill the entire photoshop template (I will have some overlays that will not require a full frame in FCE).
    4. some images will be enlarged in FCE. Instead of enlarging them in FCE, should I be enlarging them in photoshop? should I be enlarging exponentially, ie doubling the size of my original photoshop template? And if I'm enlarging them less than 150% in FCE, would the image lose it's sharpness at that enlargement?
    5. And finally, I've already created some of the stills in photoshop using the photoshop presets for HDV 1920 x 1080, pixel aspect: square and brought them into FCE. Is WYSWYG in the FCE's canvas window what I'll be seeing on my TV monitor (16:9 1080 HDTV). The images are not squashed and look great, but I'm not sure if that's what I'll end up with when I finally view on my tv.
    Thanks for any help!

    1. If you're working in FCE in a 1920x1080 sequence then that's what you should make in Photoshop, square pixels not HDV.
    2. Save as Photoshop, TIFF, or PNG, not JPEG.
    3. Yes.
    4. Enlarge in Photoshop if they have to be enlarged. You should never double the size of an image. It will quickly start to deteriorate, especially when it's re-compressed. You'll have to live with it not being full size. You should never enlarge an image more than 115%. It will start to soften and make encoding more difficult.
    5. No. The Canvas is a lo res representation of the final output. For professional work most editors use an external video monitor to view their material. This can't be done unfortunately in FCE with HD material.

  • Where do I find a qualified PhotoShop Plug-in filter developer for a freelance project?

    I need to hire a programmer (freelance) to develop a PhotoShop plug-in filter. I'm in the SF Bay area, but unfamiliar with the industry. I know I need someone skilled in C++, algorithms, PhotoShop SDK and Mac platform. I just don't know where I should be looking to find a qualified person or company.
    A web search for PhotoShop programmer doesn't bring up what I need. A Craigslist search under Computers didn't come up with anyone with PhotoShop Plug-in experience. Sites like Freelance.com, GetACoder.com, etc., provide few responses and all are "off-shore".
    Where should I search for a programmer (Preferably Bay Area) for my project?

    Maybe I can assist you,
    Leave email address or something.

  • Use of SQL fetchlet to create a custom management plug-in

    Hi,
    I would appreciate if you anyone could help me out on this:
    I need to fetch some data from EMF tables and create a custom Management plug-in in OEM so that it can be monitored from OEM itself. For getting the data from database table i am using SQL fetchlet coz it provides the facility to use SQL statement in it. Following is the code i have developed in target-type.xml file.
    <TargetMetadata META_VER="1.0" TYPE="emf_filer">
    <Display>
    <Label NLSID="emf_filer">Error Management Filer</Label>
    </Display>
    <Metric NAME="emf_filer" TYPE="TABLE">
    <Display>
    <Label NLSID="emf_filer_resp">Response</Label>
    </Display>
    <TableDescriptor>
    <!-- <ColumnDescriptor NAME="tcpPing" TYPE="NUMBER" >
    <Display>
    <Label NLSID="netapp_filer_resp_tcpPing">TCP Ping, Milliseconds</Label>
    </Display>
    </ColumnDescriptor> -->
    <ColumnDescriptor NAME="Status" TYPE="NUMBER" >
    <Display>
    <Label NLSID="emf_filer_resp_status">Status</Label>
    </Display>
    </ColumnDescriptor>
    <ColumnDescriptor NAME="PROGRAM_NAME" TYPE="STRING" >
    <Display>
    <Label NLSID="PROGRAM_NAME">Program Name</Label>
    </Display>
    </ColumnDescriptor>
    <ColumnDescriptor NAME="PROGRAM_TYPE" TYPE="STRING" >
    <Display>
    <Label NLSID="PROGRAM_TYPE">Program Type</Label>
    </Display>
    </ColumnDescriptor>
    <ColumnDescriptor NAME="RICEW_ID" TYPE="STRING" >
    <Display>
    <Label NLSID="RICEW_ID">Rice Id</Label>
    </Display>
    </ColumnDescriptor>
    <ColumnDescriptor NAME="Request_id" TYPE="NUMBER" IS_KEY="TRUE" >
    <Display>
    <Label NLSID="Request_id">Request Id</Label>
    </Display>
    </ColumnDescriptor>
    <ColumnDescriptor NAME="EBIZ_INSTANCE_NAME " TYPE="STRING" >
    <Display>
    <Label NLSID="EBIZ_INSTANCE_NAME">Instance Name</Label>
    </Display>
    </ColumnDescriptor>
    </TableDescriptor>
    <QueryDescriptor FETCHLET_ID="SQL">
    <Property NAME="MachineName" SCOPE="INSTANCE">MachineName</Property>
    <Property NAME="Port" SCOPE="INSTANCE">Port</Property>
    <Property NAME="SID" SCOPE="INSTANCE">SID</Property>
    <Property NAME="UserName" SCOPE="UserName">apps</Property>
    <Property NAME="password" SCOPE="password">password</Property>
    <Property NAME="ServiceName" SCOPE="INSTANCE">ServiceName</Property>
    <Property NAME="STATEMENT" SCOPE="INSTANCE">
    BEGIN
    SELECT PROGRAM_NAME, PROGRAM_TYPE,
    RICEW_ID,REQUEST_ID, EBIZ_INSTANCE_NAME FROM XX_EMF_MESSAGE_HEADER WHERE STATUS = 'ERROR' AND RICEW_ID = 'INT-DL019';
    END;
    </Property>
    <!-- <Property NAME="SQLINPARAM1" SCOPE="ENV">HOSTNAME</Property>
    <Property NAME="SQLOUTPARAMPOS" SCOPE="GLOBAL">2</Property>
    <Property NAME="SQLOUTPARAMTYPE" SCOPE="GLOBAL">SQL_CURSOR</Property>-->
    <Property NAME="NUMROWS" SCOPE="GLOBAL">40
    </Property>
    </QueryDescriptor>
    <ExecutionDescriptor>
    <GetTable NAME="emf_filer"/>
    <GetView NAME="emf_View" FROM_TABLE="emf_filer">
    <Column NAME="PROGRAM_NAME"/>
    <Column NAME="PROGRAM_TYPE"/>
    <Column NAME="RICEW_ID"/>
    <Column NAME="REQUEST_ID"/>
    <Column NAME="EBIZ_INSTANCE_NAME"/>
    <Filter COLUMN_NAME="REQUEST_ID" OPERATOR="GT">0</Filter>
    </GetView>
    </ExecutionDescriptor>
    <InstanceProperties>
    <InstanceProperty NAME="UserName" CREDENTIAL="TRUE" OPTIONAL="FALSE" NEED_REENTER="FALSE" HIDE_ENTRY="FALSE">
    <Display>
    <Label NLSID="UserName_emf">Username</Label>
    </Display>
    </InstanceProperty>
    <InstanceProperty NAME="password" CREDENTIAL="TRUE" OPTIONAL="FALSE" NEED_REENTER="TRUE">
    <Display>
    <Label NLSID="password_emf">Password</Label>
    </Display>
    </InstanceProperty>
    <InstanceProperty NAME="MachineName" CREDENTIAL="FALSE" OPTIONAL="FALSE">
    <Display>
    <Label NLSID="MachineName_emf">Listener Machine Name</Label>
    </Display>
    </InstanceProperty>
    <InstanceProperty NAME="Port" CREDENTIAL="FAL
    My doubt here is:
    As per Oracle it is importent to use response matrics with status column. How can i accomodate Response matrics with this code. what will be the columns except Status that i need to mention? if i use just one matrics i.e response then what will i use in in FROM clause in ExecutionDescriptor [<GetView NAME="emf_View" FROM_TABLE="emf_filer">]? i wuld appreciate if anyone could clarify my issues.
    Thanks for your help.
    Regards,
    AS

    That is what i am trying to ask..as i will b using 2 dfifferent matrics so i will have to use 2 diffrent QueryDescriptors one for Response matric and one for other one. Now following QueryDescriptor will be added in other(Not Response) matric then what should i add in QueryDescriptor in Response matric?
    Query Descriptor for matric other than "Reposnse":
    QueryDescriptor FETCHLET_ID="SQL">
         <Property NAME="MachineName" SCOPE="INSTANCE">MachineName</Property>
         <Property NAME="Port" SCOPE="INSTANCE">Port</Property>
         <Property NAME="SID" SCOPE="INSTANCE">SID</Property>
         <Property NAME="UserName" SCOPE="UserName">UserName</Property>
         <Property NAME="password" SCOPE="password">password</Property>
         <Property NAME="ServiceName" SCOPE="INSTANCE">ServiceName</Property>
         <Property NAME="STATEMENT" SCOPE="GLOBAL">
              SELECT PROGRAM_NAME,
                             PROGRAM_TYPE,
                             RICEW_ID,REQUEST_ID,
                             EBIZ_INSTANCE_NAME
              FROM XX_EMF_MESSAGE_HEADER WHERE STATUS = 'ERROR' AND RICEW_ID = 'INT-DL019';
              </Property>
    </QueryDescriptor>
    what should be the QueryDescriptor for Response matric?? Will it be same or different?
    Thanks for your help.
    Regards,
    AS
    Edited by: user9959418 on Oct 31, 2008 1:10 PM

  • Migrating to CC - Photoshop plug ins

    I do posses a vast number of photoshop plug-ins installed in CS6; now I am migrating to CC; how do I migrate the filters and plug-ins?

    Welcome to the forum,
    As John stated, it's best to check with the developers websites of each plug-in and see if they offer updated versions for Creative Cloud software, or further information about upcoming updates or compatibility issues with Creative Cloud.

  • Photoshop plug in for Canon Xapshot

    This is a longshot...
    I came across a used Canon Xapshot a few months ago and added it to my collection. It's complete with adaptor to allow me to hook up to a TV or the AV input on my G3's. Then the other day found a stack of old Canon VF floppies at work plus a few of my own from when I tested out the Xapshot when it was first released by Canon.
    So after doing some googling I came across a reference to an old Photoshop plug in the the Xapshot and was wondering if anyone knows where I can track it down. I have old versions of PS that should work with it already as we have been a Mac shop since the mid 80's.
    Thanks
    Kevin

    Why don't you post in a Canon camera forum like this one. *Canon Digital Photography Forum* @ http://photography-on-the.net/forum/ If you do a Google searcdh, you'll find some more forums.
    Surely there is a camera enthusiast on one of these forums that has the plug-in.
     Cheers, Tom

  • Creating titles in Photoshop

    Hello,
    There are times I want to create titles in photoshop or fireworks and import into iMovie.
    When I do them @ 640x480, they come in all messed up.
    They look fine on QT Pro.
    What is the best way to do this for iMovieHD 6?
    Is there a template that anyone can refer me to?
    Thanks, Richard

    I guess you get the best quality if you compose the titles in the 720x480 resolution they end up with anyway (you are using NTSC, right?). Then there will ne NO scaling that can distort the image.
    So make a 720x480 Photoshop document. You can set Photoshop to use 4320/4739 ~0.912 pixel aspect ratio so you see the correct dimensions.
    http://www.iki.fi/znark/video/conversion/
    Then the trick: don't import that image to iMovie because it will scale the 720x480 image. Instead, open it in QT Player Pro and export it as a .dv stream. THEN import that .dv to iMovie. Then there should be no scaling.
    Also remember that it is surprisingly difficult to do good-looking line-art for video. You have to slightly blur the image if it contains sharp vertical lines. Avoid some colors in NTSC etc. See also:
    http://www.sjoki.uta.fi/~shmhav/SVCDon_aMacintosh.html#slideshow
    http://www.sjoki.uta.fi/~shmhav/iMovieHD_6bugs.html#stills
    http://www.lurkertech.com/lg/fields/fields.html
    http://www.adamwilt.com/Tidbits.html#CGs

  • Error Code -17400; Unable to create thread

    Running TestStand 4.0.  Test sequence calls many sequences that run as new executions and runs fine for up to about 8 units testing simultaneously.  After that, I get a run-time error code -17400; Unable to create thread.  There are no other details available.  The steps that generate the error are able to create the new executions initially, but eventually fail once about 22 executions are running.  I am monitoring memory resources and there does not appear to be any issues.  Any troubleshooting suggestions?  Thanks.

    My test sequence has several test groups, each of which contain loops that create new threads (tests) for 48 UUTs.  Thus the number of running threads does get very high.  I was running into problems with Windows XP GDI Object resources once the number of threads reached about 200.  I then modified my program into smaller test groups to keep the number of threads at any time to less than 150.  GDI resources are no longer an issue, but the error -17400 unable to create thread happens after the first test group has completed and the second test group is just trying to run.  Note that the second test group runs fine if I skip the first test group, so the sequence itself should be okay.  I thought it might be a memory issue (even though there are no apparent memory issues seen in Windows Task Manager), so I set the "Unload after step executes" property for each of the new executions created.  That did not resolve the issue. 
    I am trying to create a simple sequence to duplicate the error without using any of the actual test sequences that require test hardware, but have not been successful thus far.
    Thanks for your replies and suggestions!

  • How to launch photoshop plug-ins under Lightroom?

    Do Somebody know a way how to launch Adobe Photoshop plug-ins under Lightroom?
    Especially the case is interesting when there is only Lightroom and there is not an installed copy of Photoshop.
    There are some 3th party favorite Photoshop's plug-ins (some may be commercial)  which I would like to apply on picture into Lightroom. But Photoshop arent more used. And even arent installed. How is possible to use photoshop's plug-ins into Lightroom?

    Thank Misterretro! You are bet! This tool is indeed the answer on my needs.
    Jim, fortunately, you were wrong. As I can see now there is a way how to launch Photoshop plug-ins under Lightroom, (and also iPhoto, Aperture and etc). At last, the link above promises it, To say it exactly it needs to try.
    PS. As I can see, not all Photoshop plug-ins are supported. (But my favorite it should be hosted) This tool "LaunchBox" can integrate into Lightroom only 3th party filter (like AlienSkin, AutoFX, Topaz and etc..) plug-ins but not standard Photoshop filters because obviously what standard Photoshop filters arent plug-ins but these are a part of Photoshop binary code.

  • Automate Menu is not showing the option to create droplet in Photoshop cs3 windows 7

    Automate Menu is not showing the option to create droplet in Photoshop cs3 windows 7.  Any thoughts why?

    Have you reset the workspace to Default?
    Window>Workspace>Default Workspace

  • Why are there 2 methods to create thread ?

    Hi,
    To create threads, there are two methods
    1) Inherit the THREAD super-class
    2) Implement the interface RUNNABLE.
    The reason for providing two methods is that, the user can only one level of "implementation inheritance". That is the reason, which comes immediately to mind. But is there another reason(s)? If yes, than what is the reason??
    Any help would be welcome
    Thanks in advance

    I was one of those authors. We all read some other
    author who said the same dumb thing LOL, been there, done that, you have my sympathy :-)
    Could you explain your use of the words "policy" and
    "mechanism"? I completely agree with your conclusion,
    but don't really understand your argument.This is one of the things that I've taken from my experiences with the X Window System (tm, I think). "Mechanism, not policy" was one of the mantras that would be repeated by every author. As I understood it, the idea was that the X protocol, Xlib, and even Xt prescribed the mechanism for a program's interaction with windows on a client screen, but did not prescribe how those windows would interact with the user. That was the "policy" to be implemented by the toolkit and application layers (thus the different appearance of Motif, OpenLook, Xaw, &c, even though they used the same underlying code up through the toolkit).
    I like the mantra, and as I've come to understand OO programming, I try to apply it as a way to identify what could/should be abstracted and what needs to remain concrete. If something abstracts a basic service that can be used in multiple ways -- like threads -- I consider that mechanism. If something is closely tied to the way my application works, I consider that policy. The former are implemented with interfaces and abstract classes, and do not contain application-specific code; the latter are implemented with instantiable classes.

  • Creating Threads in Java Stored procedures

    Can I create threads inside Java Stored procedures?
    or is there a restriction?
    Thanks
    Kal

    Can I create threads inside Java Stored procedures?
    or is there a restriction?
    Thanks
    Kal Hi Kal,
    I don't mean to be rude, but have you tried it? Personally, I
    haven't tried it (since I didn't have the need).
    You don't say what version of Oracle DBMS you are using, but I
    am using 8.1.7.3 on Solaris 7, and according to Oracle's
    "Oracle 8i Java Developer's Guide", there is no restriction
    (of-course, that depends on what you call a "restriction" :-)
    http://otn.oracle.com/docs/products/oracle8i/doc_library/817_doc/java.817/a83728/03writ11.htm#1003094
    Hope this helps.
    Good Luck,
    Avi.

Maybe you are looking for

  • Guidelines to Organizational Changes

    Hello all, Does anybody know of any guidelines to make organizational changes. For example, an organization with 1 company code decided to split them into 2 company codes and plants and storage locations ... etc. Another example would be 2 company co

  • Embedding a publication in website

    I have CS6. I have a PDF publication which I want to embed in our website so that you can go through and read each page one at a time. Similiar to http://issuu.com to give you some idea. Is there a Cs6 product to help with this? Kind regards, Sam

  • LR 3 upgrade installed, but catalogues empty

    After installing LR3 I needed to re import all my original photo files into LR3 that are in LR2. Why?

  • IPhone 4S and iOS 6 - Problem with downloading podcasts from iTunes

    Along with all the other issues (Wi-Fi, Maps, etc) I have now found a new problem for my iPhone.  I am unable to transfer any files (Podcasts, Music, Movies, etc) or sync with iTunes.  I am using the most current version of iTunes (10.7), and have re

  • Simple Navigation in Flash

    Im trying to make a simple navigation system with buttons in flash. I've made a blank layer called actions and ive named the keyframes after the 'pages' in the site (home, about, etc) I've also used keyframes to change the text and title on each page