Not natively, but(ripped from my lib) you can get the effect ptr using such hax:
int dummyID = ...insert code here to get the ID of some dummy object...;
dbSetObjectEffect( dummyID, effectID );
LPD3DXEFFECT effectPtr = dbGetObject( dummyID )->pFrame->pMesh->pVertexShaderEffect->m_pEffect;
Just keep in mind that GDK is written like poo so the above code actually causes a memory leak, so only call it once after you load the shader.
You can then use some slightly crap code to write things like arrays of booleans:
void Shader::set( const std::string& identifier, u32 index, bool value )
{
LPD3DXEFFECT effect = getEffect();
BOOL valueArray[128];
effect->GetBoolArray( identifier.c_str(), valueArray, index + 1 );
valueArray[index] = value;
effect->SetBoolArray( identifier.c_str(), valueArray, index + 1 );
}
Also, that last method won't work on its own(obviously), but I'm sure you can get the gist of what's happening there to rewrite it.